/* /web/static/src/js/services/session.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('web.session',function(require){"use strict";var Session=require('web.Session');var modules=odoo._modules;var session=new Session(undefined,undefined,{modules:modules,use_cors:false});session.is_bound=session.session_bind();return session;});;
/* /web/static/src/js/public/public_env.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define("web.public_env",function(require){"use strict";const commonEnv=require("web.commonEnv");return commonEnv;});;
/* /web/static/src/js/public/public_crash_manager.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('web.PublicCrashManager',function(require){"use strict";const core=require('web.core');const CrashManager=require('web.CrashManager').CrashManager;const PublicCrashManager=CrashManager.extend({_displayWarning(message,title,options){this.displayNotification(Object.assign({},options,{title,message,sticky:true,}));},});core.serviceRegistry.add('crash_manager',PublicCrashManager);return{CrashManager:PublicCrashManager,};});;
/* /web/static/src/js/public/public_notification.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('web.public.Notification',function(require){'use strict';var Notification=require('web.Notification');Notification.include({xmlDependencies:['/web/static/src/xml/notification.xml'],});});;
/* /web/static/src/js/public/public_root.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('web.public.root',function(require){'use strict';var ajax=require('web.ajax');var dom=require('web.dom');const env=require('web.public_env');var session=require('web.session');var utils=require('web.utils');var publicWidget=require('web.public.widget');var publicRootRegistry=new publicWidget.RootWidgetRegistry();function getLang(){var html=document.documentElement;return(html.getAttribute('lang')||'en_US').replace('-','_');}
var lang=utils.get_cookie('frontend_lang')||getLang();var localeDef=ajax.loadJS('/web/webclient/locale/'+lang.replace('-','_'));var PublicRoot=publicWidget.RootWidget.extend({events:_.extend({},publicWidget.RootWidget.prototype.events||{},{'submit .js_website_submit_form':'_onWebsiteFormSubmit','click .js_disable_on_click':'_onDisableOnClick',}),custom_events:_.extend({},publicWidget.RootWidget.prototype.custom_events||{},{call_service:'_onCallService',context_get:'_onContextGet',main_object_request:'_onMainObjectRequest',widgets_start_request:'_onWidgetsStartRequest',widgets_stop_request:'_onWidgetsStopRequest',}),init:function(){this._super.apply(this,arguments);this.env=env;this.publicWidgets=[];},willStart:function(){return Promise.all([this._super.apply(this,arguments),session.is_bound,localeDef]);},start:function(){var defs=[this._super.apply(this,arguments),this._startWidgets()];this.$(".o_image[data-mimetype^='image']").each(function(){var $img=$(this);if(/gif|jpe|jpg|png/.test($img.data('mimetype'))&&$img.data('src')){$img.css('background-image',"url('"+$img.data('src')+"')");}});if(window.location.hash.indexOf("scrollTop=")>-1){this.el.scrollTop=+window.location.hash.match(/scrollTop=([0-9]+)/)[1];}
if($.fn.placeholder){$('input, textarea').placeholder();}
this.$el.children().on('error.datetimepicker',this._onDateTimePickerError.bind(this));return Promise.all(defs);},_getContext:function(context){return _.extend({'lang':getLang(),},context||{});},_getExtraContext:function(context){return this._getContext(context);},_getPublicWidgetsRegistry:function(options){return publicWidget.registry;},_getRegistry:function(){return publicRootRegistry;},_startWidgets:function($from,options){var self=this;if($from===undefined){$from=this.$('#wrapwrap');if(!$from.length){$from=this.$el;}}
if(options===undefined){options={};}
this._stopWidgets($from);var defs=_.map(this._getPublicWidgetsRegistry(options),function(PublicWidget){var selector=PublicWidget.prototype.selector||'';var $target=dom.cssFind($from,selector,true);var defs=_.map($target,function(el){var widget=new PublicWidget(self,options);self.publicWidgets.push(widget);return widget.attachTo($(el));});return Promise.all(defs);});return Promise.all(defs);},_stopWidgets:function($from){var removedWidgets=_.map(this.publicWidgets,function(widget){if(!$from||$from.filter(widget.el).length||$from.find(widget.el).length){widget.destroy();return widget;}
return null;});this.publicWidgets=_.difference(this.publicWidgets,removedWidgets);},_onCallService:function(ev){function _computeContext(context,noContextKeys){context=_.extend({},this._getContext(),context);if(noContextKeys){context=_.omit(context,noContextKeys);}
return JSON.parse(JSON.stringify(context));}
const payload=ev.data;let args=payload.args||[];if(payload.service==='ajax'&&payload.method==='rpc'){args=args.concat(ev.target);var route=args[0];if(_.str.startsWith(route,'/web/dataset/call_kw/')){var params=args[1];var options=args[2];var noContextKeys;if(options){noContextKeys=options.noContextKeys;args[2]=_.omit(options,'noContextKeys');}
params.kwargs.context=_computeContext.call(this,params.kwargs.context,noContextKeys);}}else if(payload.service==='ajax'&&payload.method==='loadLibs'){args[1]=_computeContext.call(this,args[1]);}
const service=this.env.services[payload.service];const result=service[payload.method].apply(service,args);payload.callback(result);},_onContextGet:function(ev){if(ev.data.extra){ev.data.callback(this._getExtraContext(ev.data.context));}else{ev.data.callback(this._getContext(ev.data.context));}},_onMainObjectRequest:function(ev){var repr=$('html').data('main-object');var m=repr.match(/(.+)\((\d+),(.*)\)/);ev.data.callback({model:m[1],id:m[2]|0,});},_onWidgetsStartRequest:function(ev){this._startWidgets(ev.data.$target,ev.data.options).then(ev.data.onSuccess).guardedCatch(ev.data.onFailure);},_onWidgetsStopRequest:function(ev){this._stopWidgets(ev.data.$target);},_onWebsiteFormSubmit:function(ev){var $buttons=$(ev.currentTarget).find('button[type="submit"], a.a-submit');_.each($buttons,function(btn){var $btn=$(btn);$btn.html(' '+$btn.text());$btn.prop('disabled',true);});},_onDisableOnClick:function(ev){$(ev.currentTarget).addClass('disabled');},_onDateTimePickerError:function(ev){return false;},});return{PublicRoot:PublicRoot,publicRootRegistry:publicRootRegistry,};});;
/* /website/static/src/js/content/website_root_instance.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('root.widget',function(require){'use strict';const AbstractService=require('web.AbstractService');const env=require('web.public_env');var lazyloader=require('web.public.lazyloader');var websiteRootData=require('website.root');owl.config.mode=env.isDebug()?"dev":"prod";owl.Component.env=env;AbstractService.prototype.deployServices(env);var websiteRoot=new websiteRootData.WebsiteRoot(null);return lazyloader.allScriptsLoaded.then(function(){return websiteRoot.attachTo(document.body).then(function(){return websiteRoot;});});});;
/* /web/static/src/js/public/public_widget.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('web.public.widget',function(require){'use strict';var Class=require('web.Class');var dom=require('web.dom');var mixins=require('web.mixins');var session=require('web.session');var Widget=require('web.Widget');var RootWidget=Widget.extend({custom_events:_.extend({},Widget.prototype.custom_events||{},{'registry_update':'_onRegistryUpdate','get_session':'_onGetSession',}),init:function(){this._super.apply(this,arguments);this._widgets=[];this._listenToUpdates=false;this._getRegistry().setParent(this);},start:function(){var defs=[this._super.apply(this,arguments)];defs.push(this._attachComponents());this._listenToUpdates=true;return Promise.all(defs);},_attachComponent:function(childInfo,$from){var self=this;var $elements=dom.cssFind($from||this.$el,childInfo.selector);var defs=_.map($elements,function(element){var w=new childInfo.Widget(self);self._widgets.push(w);return w.attachTo(element);});return Promise.all(defs);},_attachComponents:function($from){var self=this;var childInfos=this._getRegistry().get();var defs=_.map(childInfos,function(childInfo){return self._attachComponent(childInfo,$from);});return Promise.all(defs);},_getRegistry:function(){},_onGetSession:function(event){if(event.data.callback){event.data.callback(session);}},_onRegistryUpdate:function(ev){ev.stopPropagation();if(this._listenToUpdates){this._attachComponent(ev.data);}},});var RootWidgetRegistry=Class.extend(mixins.EventDispatcherMixin,{init:function(){mixins.EventDispatcherMixin.init.call(this);this._registry=[];},add:function(Widget,selector){var registryInfo={Widget:Widget,selector:selector,};this._registry.push(registryInfo);this.trigger_up('registry_update',registryInfo);},get:function(){return this._registry;},});var PublicWidget=Widget.extend({selector:false,events:{},init:function(parent,options){this._super.apply(this,arguments);this.options=options||{};},destroy:function(){if(this.selector){var $oldel=this.$el;this.setElement(null);}
this._super.apply(this,arguments);if(this.selector){this.$el=$oldel;this.el=$oldel[0];this.$target=this.$el;this.target=this.el;}},setElement:function(){this._super.apply(this,arguments);if(this.selector){this.$target=this.$el;this.target=this.el;}},_delegateEvents:function(){var self=this;var originalEvents=this.events;var events={};_.each(this.events,function(method,event){if(typeof method!=='string'){events[event]=method;return;}
var methodOptions=method.split(' ');if(methodOptions.length<=1){events[event]=method;return;}
var isAsync=_.contains(methodOptions,'async');if(!isAsync){events[event]=method;return;}
method=self.proxy(methodOptions[methodOptions.length-1]);if(_.str.startsWith(event,'click')){method=dom.makeButtonHandler(method);}else{method=dom.makeAsyncHandler(method);}
events[event]=method;});this.events=events;this._super.apply(this,arguments);this.events=originalEvents;},_getContext:function(extra,extraContext){var context;this.trigger_up('context_get',{extra:extra||false,context:extraContext,callback:function(ctx){context=ctx;},});return context;},});var registry={};registry._fixAppleCollapse=PublicWidget.extend({selector:'div[data-toggle="collapse"]',events:{'click':function(){},},});return{RootWidget:RootWidget,RootWidgetRegistry:RootWidgetRegistry,Widget:PublicWidget,registry:registry,};});;
/* /web_editor/static/src/js/frontend/loader.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('web_editor.loader',function(require){'use strict';var Wysiwyg=require('web_editor.wysiwyg.root');function load(parent,textarea,options){var loading=textarea.nextElementSibling;if(loading&&!loading.classList.contains('o_wysiwyg_loading')){loading=null;}
if(!textarea.value.match(/\S/)){textarea.value='
';}
var wysiwyg=new Wysiwyg(parent,options);return wysiwyg.attachTo(textarea).then(()=>{if(loading){loading.parentNode.removeChild(loading);}
return wysiwyg;});}
return{load:load,};});;
/* /portal/static/src/js/portal.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('portal.portal',function(require){'use strict';var publicWidget=require('web.public.widget');const Dialog=require('web.Dialog');const{_t,qweb}=require('web.core');const ajax=require('web.ajax');publicWidget.registry.portalDetails=publicWidget.Widget.extend({selector:'.o_portal_details',events:{'change select[name="country_id"]':'_onCountryChange',},start:function(){var def=this._super.apply(this,arguments);this.$state=this.$('select[name="state_id"]');this.$stateOptions=this.$state.filter(':enabled').find('option:not(:first)');this._adaptAddressForm();return def;},_adaptAddressForm:function(){var $country=this.$('select[name="country_id"]');var countryID=($country.val()||0);this.$stateOptions.detach();var $displayedState=this.$stateOptions.filter('[data-country_id='+countryID+']');var nb=$displayedState.appendTo(this.$state).show().length;this.$state.parent().toggle(nb>=1);},_onCountryChange:function(){this._adaptAddressForm();},});publicWidget.registry.PortalHomeCounters=publicWidget.Widget.extend({selector:'.o_portal_my_home',start:function(){var def=this._super.apply(this,arguments);this._updateCounters();return def;},async _updateCounters(elem){const numberRpc=3;const needed=this.$('[data-placeholder_count]').map((i,o)=>$(o).data('placeholder_count')).toArray();const counterByRpc=Math.ceil(needed.length/numberRpc);const proms=[...Array(Math.min(numberRpc,needed.length)).keys()].map(async i=>{await this._rpc({route:"/my/counters",params:{counters:needed.slice(i*counterByRpc,(i+1)*counterByRpc)},}).then(data=>{Object.keys(data).map(k=>this.$("[data-placeholder_count='"+k+"']").text(data[k]));});});return Promise.all(proms);},});publicWidget.registry.portalSearchPanel=publicWidget.Widget.extend({selector:'.o_portal_search_panel',events:{'click .search-submit':'_onSearchSubmitClick','click .dropdown-item':'_onDropdownItemClick','keyup input[name="search"]':'_onSearchInputKeyup',},start:function(){var def=this._super.apply(this,arguments);this._adaptSearchLabel(this.$('.dropdown-item.active'));return def;},_adaptSearchLabel:function(elem){var $label=$(elem).clone();$label.find('span.nolabel').remove();this.$('input[name="search"]').attr('placeholder',$label.text().trim());},_search:function(){var search=$.deparam(window.location.search.substring(1));search['search_in']=this.$('.dropdown-item.active').attr('href').replace('#','');search['search']=this.$('input[name="search"]').val();window.location.search=$.param(search);},_onSearchSubmitClick:function(){this._search();},_onDropdownItemClick:function(ev){ev.preventDefault();var $item=$(ev.currentTarget);$item.closest('.dropdown-menu').find('.dropdown-item').removeClass('active');$item.addClass('active');this._adaptSearchLabel(ev.currentTarget);},_onSearchInputKeyup:function(ev){if(ev.keyCode===$.ui.keyCode.ENTER){this._search();}},});function handleCheckIdentity(rpc,wrapped){return wrapped.then((r)=>{if(!_.isMatch(r,{type:'ir.actions.act_window',res_model:'res.users.identitycheck'})){return r;}
const check_id=r.res_id;return ajax.loadXML('/portal/static/src/xml/portal_security.xml',qweb).then(()=>new Promise((resolve,reject)=>{const d=new Dialog(null,{title:_t("Security Control"),$content:qweb.render('portal.identitycheck'),buttons:[{text:_t("Confirm Password"),classes:'btn btn-primary',click(){const password_input=this.el.querySelector('[name=password]');if(!password_input.reportValidity()){password_input.classList.add('is-invalid');return;}
return rpc({model:'res.users.identitycheck',method:'write',args:[check_id,{password:password_input.value}]}).then(()=>rpc({model:'res.users.identitycheck',method:'run_check',args:[check_id]})).then((r)=>{this.close();resolve(r);},(err)=>{err.event.preventDefault();password_input.classList.add('is-invalid');password_input.setCustomValidity(_t("Check failed"));password_input.reportValidity();});}},{text:_t('Cancel'),close:true},{text:_t('Forgot password?'),classes:'btn btn-link',click(){window.location.href="/web/reset_password/";}}]}).on('close',null,()=>{reject();});d.opened(()=>{const pw=d.el.querySelector('[name="password"]');pw.focus();pw.addEventListener('input',()=>{pw.classList.remove('is-invalid');pw.setCustomValidity('');});d.el.addEventListener('submit',(e)=>{e.preventDefault();d.$footer.find('.btn-primary').click();});});d.open();}));});}
return{handleCheckIdentity,}});;
/* /portal/static/src/js/portal_chatter.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('portal.chatter',function(require){'use strict';var core=require('web.core');const dom=require('web.dom');var publicWidget=require('web.public.widget');var time=require('web.time');var portalComposer=require('portal.composer');var qweb=core.qweb;var _t=core._t;var PortalChatter=publicWidget.Widget.extend({template:'portal.Chatter',xmlDependencies:['/portal/static/src/xml/portal_chatter.xml'],events:{'click .o_portal_chatter_pager_btn':'_onClickPager','click .o_portal_chatter_js_is_internal':'async _onClickUpdateIsInternal',},init:function(parent,options){var self=this;this.options={};this._super.apply(this,arguments);_.each(options,function(val,key){self.options[_.str.underscored(key)]=val;});this.options=_.defaults(this.options,{'allow_composer':true,'display_composer':false,'csrf_token':odoo.csrf_token,'message_count':0,'pager_step':10,'pager_scope':5,'pager_start':1,'is_user_public':true,'is_user_employee':false,'is_user_publisher':false,'hash':false,'pid':false,'domain':[],});this.set('messages',[]);this.set('message_count',this.options['message_count']);this.set('pager',{});this.set('domain',this.options['domain']);this._currentPage=this.options['pager_start'];},willStart:function(){return Promise.all([this._super.apply(this,arguments),this._chatterInit()]);},start:function(){this.on("change:messages",this,this._renderMessages);this.on("change:message_count",this,function(){this._renderMessageCount();this.set('pager',this._pager(this._currentPage));});this.on("change:pager",this,this._renderPager);this.on("change:domain",this,this._onChangeDomain);this.set('message_count',this.options['message_count']);this.set('messages',this.preprocessMessages(this.result['messages']));var defs=[];defs.push(this._super.apply(this,arguments));if(this.options['display_composer']){this._composer=new portalComposer.PortalComposer(this,this.options);defs.push(this._composer.replace(this.$('.o_portal_chatter_composer')));}
return Promise.all(defs);},messageFetch:function(domain){var self=this;return this._rpc({route:'/mail/chatter_fetch',params:self._messageFetchPrepareParams(),}).then(function(result){self.set('messages',self.preprocessMessages(result['messages']));self.set('message_count',result['message_count']);});},preprocessMessages:function(messages){_.each(messages,function(m){m['author_avatar_url']=_.str.sprintf('/web/image/%s/%s/author_avatar/50x50','mail.message',m.id);m['published_date_str']=_.str.sprintf(_t('Published on %s'),moment(time.str_to_datetime(m.date)).format('MMMM Do YYYY, h:mm:ss a'));});return messages;},_chatterInit:function(){var self=this;return this._rpc({route:'/mail/chatter_init',params:this._messageFetchPrepareParams()}).then(function(result){self.result=result;self.options=_.extend(self.options,self.result['options']||{});return result;});},_changeCurrentPage:function(page,domain){this._currentPage=page;var d=domain?domain:_.clone(this.get('domain'));this.set('domain',d);},_messageFetchPrepareParams:function(){var self=this;var data={'res_model':this.options['res_model'],'res_id':this.options['res_id'],'limit':this.options['pager_step'],'offset':(this._currentPage-1)*this.options['pager_step'],'allow_composer':this.options['allow_composer'],};if(self.options['token']){data['token']=self.options['token'];}
if(this.get('domain')){data['domain']=this.get('domain');}
return data;},_pager:function(page){page=page||1;var total=this.get('message_count');var scope=this.options['pager_scope'];var step=this.options['pager_step'];var pageCount=Math.ceil(parseFloat(total)/step);page=Math.max(1,Math.min(parseInt(page),pageCount));scope-=1;var pmin=Math.max(page-parseInt(Math.floor(scope/2)),1);var pmax=Math.min(pmin+scope,pageCount);if(pmax-scope>0){pmin=pmax-scope;}else{pmin=1;}
var pages=[];_.each(_.range(pmin,pmax+1),function(index){pages.push(index);});return{"page_count":pageCount,"offset":(page-1)*step,"page":page,"page_start":pmin,"page_previous":Math.max(pmin,page-1),"page_next":Math.min(pmax,page+1),"page_end":pmax,"pages":pages};},_renderMessages:function(){this.$('.o_portal_chatter_messages').html(qweb.render("portal.chatter_messages",{widget:this}));},_renderMessageCount:function(){this.$('.o_message_counter').replaceWith(qweb.render("portal.chatter_message_count",{widget:this}));},_renderPager:function(){this.$('.o_portal_chatter_pager').replaceWith(qweb.render("portal.pager",{widget:this}));},_onChangeDomain:function(){var self=this;this.messageFetch().then(function(){var p=self._currentPage;self.set('pager',self._pager(p));});},_onClickPager:function(ev){ev.preventDefault();var page=$(ev.currentTarget).data('page');this._changeCurrentPage(page);},_onClickUpdateIsInternal:function(ev){ev.preventDefault();var $elem=$(ev.currentTarget);return this._rpc({route:'/mail/update_is_internal',params:{message_id:$elem.data('message-id'),is_internal:!$elem.data('is-internal'),},}).then(function(result){$elem.data('is-internal',result);if(result===true){$elem.addClass('o_portal_message_internal_on');$elem.removeClass('o_portal_message_internal_off');}else{$elem.addClass('o_portal_message_internal_off');$elem.removeClass('o_portal_message_internal_on');}});},});publicWidget.registry.portalChatter=publicWidget.Widget.extend({selector:'.o_portal_chatter',async start(){const proms=[this._super.apply(this,arguments)];const chatter=new PortalChatter(this,this.$el.data());proms.push(chatter.appendTo(this.$el));await Promise.all(proms);if(window.location.hash===`#${this.el.id}`){dom.scrollTo(this.el,{duration:0});}},});return{PortalChatter:PortalChatter,};});;
/* /portal/static/src/js/portal_composer.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('portal.composer',function(require){'use strict';var ajax=require('web.ajax');var core=require('web.core');var publicWidget=require('web.public.widget');var qweb=core.qweb;var _t=core._t;var PortalComposer=publicWidget.Widget.extend({template:'portal.Composer',xmlDependencies:['/portal/static/src/xml/portal_chatter.xml'],events:{'change .o_portal_chatter_file_input':'_onFileInputChange','click .o_portal_chatter_attachment_btn':'_onAttachmentButtonClick','click .o_portal_chatter_attachment_delete':'async _onAttachmentDeleteClick','click .o_portal_chatter_composer_btn':'async _onSubmitButtonClick',},init:function(parent,options){this._super.apply(this,arguments);this.options=_.defaults(options||{},{'allow_composer':true,'display_composer':false,'csrf_token':odoo.csrf_token,'token':false,'res_model':false,'res_id':false,});this.attachments=[];},start:function(){var self=this;this.$attachmentButton=this.$('.o_portal_chatter_attachment_btn');this.$fileInput=this.$('.o_portal_chatter_file_input');this.$sendButton=this.$('.o_portal_chatter_composer_btn');this.$attachments=this.$('.o_portal_chatter_composer_form .o_portal_chatter_attachments');this.$attachmentIds=this.$('.o_portal_chatter_attachment_ids');this.$attachmentTokens=this.$('.o_portal_chatter_attachment_tokens');return this._super.apply(this,arguments).then(function(){if(self.options.default_attachment_ids){self.attachments=self.options.default_attachment_ids||[];_.each(self.attachments,function(attachment){attachment.state='done';});self._updateAttachments();}
return Promise.resolve();});},_onAttachmentButtonClick:function(){this.$fileInput.click();},_onAttachmentDeleteClick:function(ev){var self=this;var attachmentId=$(ev.currentTarget).closest('.o_portal_chatter_attachment').data('id');var accessToken=_.find(this.attachments,{'id':attachmentId}).access_token;ev.preventDefault();ev.stopPropagation();this.$sendButton.prop('disabled',true);return this._rpc({route:'/portal/attachment/remove',params:{'attachment_id':attachmentId,'access_token':accessToken,},}).then(function(){self.attachments=_.reject(self.attachments,{'id':attachmentId});self._updateAttachments();self.$sendButton.prop('disabled',false);});},_onFileInputChange:function(){var self=this;this.$sendButton.prop('disabled',true);return Promise.all(_.map(this.$fileInput[0].files,function(file){return new Promise(function(resolve,reject){var data={'name':file.name,'file':file,'res_id':self.options.res_id,'res_model':self.options.res_model,'access_token':self.options.token,};ajax.post('/portal/attachment/add',data).then(function(attachment){attachment.state='pending';self.attachments.push(attachment);self._updateAttachments();resolve();}).guardedCatch(function(error){self.displayNotification({message:_.str.sprintf(_t("Could not save file %s"),_.escape(file.name)),type:'warning',sticky:true,});resolve();});});})).then(function(){self.$fileInput[0].value=null;self.$sendButton.prop('disabled',false);});},_onSubmitButtonClick:function(){return new Promise(function(resolve,reject){});},_updateAttachments:function(){this.$attachmentIds.val(_.pluck(this.attachments,'id'));this.$attachmentTokens.val(_.pluck(this.attachments,'access_token'));this.$attachments.html(qweb.render('portal.Chatter.Attachments',{attachments:this.attachments,showDelete:true,}));},});return{PortalComposer:PortalComposer,};});;
/* /portal/static/src/js/portal_signature.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('portal.signature_form',function(require){'use strict';var core=require('web.core');var publicWidget=require('web.public.widget');var NameAndSignature=require('web.name_and_signature').NameAndSignature;var qweb=core.qweb;var _t=core._t;var SignatureForm=publicWidget.Widget.extend({template:'portal.portal_signature',xmlDependencies:['/portal/static/src/xml/portal_signature.xml'],events:{'click .o_portal_sign_submit':'async _onClickSignSubmit',},custom_events:{'signature_changed':'_onChangeSignature',},init:function(parent,options){this._super.apply(this,arguments);this.csrf_token=odoo.csrf_token;this.callUrl=options.callUrl||'';this.rpcParams=options.rpcParams||{};this.sendLabel=options.sendLabel||_t("Accept & Sign");this.nameAndSignature=new NameAndSignature(this,options.nameAndSignatureOptions||{});},start:function(){var self=this;this.$confirm_btn=this.$('.o_portal_sign_submit');this.$controls=this.$('.o_portal_sign_controls');var subWidgetStart=this.nameAndSignature.replace(this.$('.o_web_sign_name_and_signature'));return Promise.all([subWidgetStart,this._super.apply(this,arguments)]).then(function(){self.nameAndSignature.resetSignature();});},focusName:function(){this.nameAndSignature.focusName();},resetSignature:function(){return this.nameAndSignature.resetSignature();},_onClickSignSubmit:function(ev){var self=this;ev.preventDefault();if(!this.nameAndSignature.validateSignature()){return;}
var name=this.nameAndSignature.getName();var signature=this.nameAndSignature.getSignatureImage()[1];return this._rpc({route:this.callUrl,params:_.extend(this.rpcParams,{'name':name,'signature':signature,}),}).then(function(data){if(data.error){self.$('.o_portal_sign_error_msg').remove();self.$controls.prepend(qweb.render('portal.portal_signature_error',{widget:data}));}else if(data.success){var $success=qweb.render('portal.portal_signature_success',{widget:data});self.$el.empty().append($success);}
if(data.force_refresh){if(data.redirect_url){window.location=data.redirect_url;}else{window.location.reload();}
return new Promise(function(){});}});},_onChangeSignature:function(){var isEmpty=this.nameAndSignature.isSignatureEmpty();this.$confirm_btn.prop('disabled',isEmpty);},});publicWidget.registry.SignatureForm=publicWidget.Widget.extend({selector:'.o_portal_signature_form',start:function(){var hasBeenReset=false;var callUrl=this.$el.data('call-url');var nameAndSignatureOptions={defaultName:this.$el.data('default-name'),mode:this.$el.data('mode'),displaySignatureRatio:this.$el.data('signature-ratio'),signatureType:this.$el.data('signature-type'),fontColor:this.$el.data('font-color')||'black',};var sendLabel=this.$el.data('send-label');var form=new SignatureForm(this,{callUrl:callUrl,nameAndSignatureOptions:nameAndSignatureOptions,sendLabel:sendLabel,});this.$el.closest('.modal').on('shown.bs.modal',function(ev){if(!hasBeenReset){hasBeenReset=true;form.resetSignature();}else{form.focusName();}});return Promise.all([this._super.apply(this,arguments),form.appendTo(this.$el)]);},});return{SignatureForm:SignatureForm,};});;
/* /portal/static/src/js/portal_sidebar.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('portal.PortalSidebar',function(require){'use strict';var core=require('web.core');var publicWidget=require('web.public.widget');var time=require('web.time');var session=require('web.session');var _t=core._t;var PortalSidebar=publicWidget.Widget.extend({start:function(){this._setDelayLabel();return this._super.apply(this,arguments);},_setDelayLabel:function(){var $sidebarTimeago=this.$el.find('.o_portal_sidebar_timeago');_.each($sidebarTimeago,function(el){var dateTime=moment(time.auto_str_to_date($(el).attr('datetime'))),today=moment().startOf('day'),diff=dateTime.diff(today,'days',true),displayStr;session.is_bound.then(function(){if(diff===0){displayStr=_t('Due today');}else if(diff>0){displayStr=_.str.sprintf(_t('Due in %1d days'),Math.abs(diff));}else{displayStr=_.str.sprintf(_t('%1d days overdue'),Math.abs(diff));}
$(el).text(displayStr);});});},_printIframeContent:function(href){if($.browser.mozilla){window.open(href,'_blank');return;}
if(!this.printContent){this.printContent=$('');this.$el.append(this.printContent);this.printContent.on('load',function(){$(this).get(0).contentWindow.print();});}else{this.printContent.get(0).contentWindow.print();}},});return PortalSidebar;});;
/* /auth_totp_portal/static/src/js/totp_frontend.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('auth_totp_portal.button',function(require){'use strict';const{_t}=require('web.core');const publicWidget=require('web.public.widget');const Dialog=require('web.Dialog');const{handleCheckIdentity}=require('portal.portal');function fromField(f,record){switch(f.getAttribute('name')){case'qrcode':const qrcode=document.createElement('img');qrcode.setAttribute('class','img img-fluid offset-1');qrcode.setAttribute('src','data:image/png;base64,'+record['qrcode']);return qrcode;case'url':const url=document.createElement('a');url.setAttribute('href',record['url']);url.textContent=f.getAttribute('text')||record['url'];return url;case'code':const code=document.createElement('input');code.setAttribute('name','code');code.setAttribute('class','form-control col-10 col-md-6');code.setAttribute('placeholder','6-digit code');code.required=true;code.maxLength=6;code.minLength=6;return code;default:return document.createTextNode(record[f.getAttribute('name')]||'');}}
function fixupViewBody(oldNode,record){let qrcode=null,code=null,node=null;switch(oldNode.nodeType){case 1:if(oldNode.tagName==='field'){node=fromField(oldNode,record);switch(oldNode.getAttribute('name')){case'qrcode':qrcode=node;break;case'code':code=node;break}
break;}
node=document.createElement(oldNode.tagName);for(let i=0;iar[0]);const doc=new DOMParser().parseFromString(document.getElementById('totp_wizard_view').textContent,'application/xhtml+xml');const xmlBody=doc.querySelector('sheet *');const[body,,codeInput]=fixupViewBody(xmlBody,record);codeInput.addEventListener('input',()=>codeInput.setCustomValidity(''));const buttons=[];for(const button of doc.querySelectorAll('footer button')){buttons.push(new Button(this,model,record.id,codeInput,button));}
const $content=document.createElement('form');$content.appendChild(body);$content.addEventListener('submit',(e)=>{e.preventDefault();dialog.$footer.find('.btn-primary').click();});var dialog=new Dialog(this,{$content,buttons}).open();}});publicWidget.registry.DisableTOTPButton=publicWidget.Widget.extend({selector:'#auth_totp_portal_disable',events:{click:'_onClick'},async _onClick(e){e.preventDefault();await handleCheckIdentity(this.proxy('_rpc'),this._rpc({model:'res.users',method:'totp_disable',args:[this.getSession().user_id]}))
window.location=window.location;}});});;
/* /website/static/src/js/set_view_track.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('website.set_view_track',function(require){"use strict";var CustomizeMenu=require('website.customizeMenu');var Widget=require('web.Widget');var TrackPage=Widget.extend({template:'website.track_page',xmlDependencies:['/website/static/src/xml/track_page.xml'],events:{'change #switch-track-page':'_onTrackChange',},start:function(){this.$input=this.$('#switch-track-page');this._isTracked().then((data)=>{if(data[0]['track']){this.track=true;this.$input.attr('checked','checked');}else{this.track=false;}});},_isTracked:function(val){var viewid=$('html').data('viewid');if(!viewid){return Promise.reject();}else{return this._rpc({model:'ir.ui.view',method:'read',args:[[viewid],['track']],});}},_onTrackChange:function(ev){var checkboxValue=this.$input.is(':checked');if(checkboxValue!==this.track){this.track=checkboxValue;this._trackPage(checkboxValue);}},_trackPage:function(val){var viewid=$('html').data('viewid');if(!viewid){return Promise.reject();}else{return this._rpc({model:'ir.ui.view',method:'write',args:[[viewid],{track:val}],});}},});CustomizeMenu.include({_loadCustomizeOptions:function(){var self=this;var def=this._super.apply(this,arguments);return def.then(function(){if(!self.__trackpageLoaded){self.__trackpageLoaded=true;self.trackPage=new TrackPage(self);self.trackPage.appendTo(self.$el.children('.dropdown-menu'));}});},});});;
/* /website/static/src/js/utils.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('website.utils',function(require){'use strict';var ajax=require('web.ajax');var core=require('web.core');var qweb=core.qweb;function loadAnchors(url){return new Promise(function(resolve,reject){if(url===window.location.pathname||url[0]==='#'){resolve(document.body.outerHTML);}else if(url.length&&!url.startsWith("http")){$.get(window.location.origin+url).then(resolve,reject);}else{resolve();}}).then(function(response){return _.map($(response).find('[id][data-anchor=true]'),function(el){return'#'+el.id;});}).catch(error=>{console.debug(error);return[];});}
function autocompleteWithPages(self,$input,options){$.widget("website.urlcomplete",$.ui.autocomplete,{options:options||{},_create:function(){this._super();this.widget().menu("option","items","> :not(.ui-autocomplete-category)");},_renderMenu:function(ul,items){const self=this;items.forEach(item=>{if(item.separator){self._renderSeparator(ul,item);}
else{self._renderItem(ul,item);}});},_renderSeparator:function(ul,item){return $("").append(`${item.separator}
`).appendTo(ul);},_renderItem:function(ul,item){return $("").data('ui-autocomplete-item',item).append(`${item.label}
`).appendTo(ul);},});$input.urlcomplete({source:function(request,response){if(request.term[0]==='#'){loadAnchors(request.term).then(function(anchors){response(anchors);});}else if(request.term.startsWith('http')||request.term.length===0){response();}else{return self._rpc({route:'/website/get_suggested_links',params:{needle:request.term,limit:15,}}).then(function(res){let choices=res.matching_pages;res.others.forEach(other=>{if(other.values.length){choices=choices.concat([{separator:other.title}],other.values,);}});response(choices);});}},select:function(ev,ui){ev.target.value=ui.item.value;self.trigger_up('website_url_chosen');ev.preventDefault();},});}
function onceAllImagesLoaded($element,$excluded){var defs=_.map($element.find('img').addBack('img'),function(img){if(img.complete||$excluded&&($excluded.is(img)||$excluded.has(img).length)){return;}
var def=new Promise(function(resolve,reject){$(img).one('load',function(){resolve();});});return def;});return Promise.all(defs);}
function prompt(options,_qweb){if(typeof options==='string'){options={text:options};}
var xmlDef;if(_.isUndefined(_qweb)){_qweb='website.prompt';xmlDef=ajax.loadXML('/website/static/src/xml/website.xml',core.qweb);}
options=_.extend({window_title:'',field_name:'','default':'',init:function(){},},options||{});var type=_.intersection(Object.keys(options),['input','textarea','select']);type=type.length?type[0]:'input';options.field_type=type;options.field_name=options.field_name||options[type];var def=new Promise(function(resolve,reject){Promise.resolve(xmlDef).then(function(){var dialog=$(qweb.render(_qweb,options)).appendTo('body');options.$dialog=dialog;var field=dialog.find(options.field_type).first();field.val(options['default']);field.fillWith=function(data){if(field.is('select')){var select=field[0];data.forEach(function(item){select.options[select.options.length]=new window.Option(item[1],item[0]);});}else{field.val(data);}};var init=options.init(field,dialog);Promise.resolve(init).then(function(fill){if(fill){field.fillWith(fill);}
dialog.modal('show');field.focus();dialog.on('click','.btn-primary',function(){var backdrop=$('.modal-backdrop');resolve({val:field.val(),field:field,dialog:dialog});dialog.modal('hide').remove();backdrop.remove();});});dialog.on('hidden.bs.modal',function(){var backdrop=$('.modal-backdrop');reject();dialog.remove();backdrop.remove();});if(field.is('input[type="text"], select')){field.keypress(function(e){if(e.which===13){e.preventDefault();dialog.find('.btn-primary').trigger('click');}});}});});return def;}
function websiteDomain(self){var websiteID;self.trigger_up('context_get',{callback:function(ctx){websiteID=ctx['website_id'];},});return['|',['website_id','=',false],['website_id','=',websiteID]];}
function sendRequest(route,params){function _addInput(form,name,value){let param=document.createElement('input');param.setAttribute('type','hidden');param.setAttribute('name',name);param.setAttribute('value',value);form.appendChild(param);}
let form=document.createElement('form');form.setAttribute('action',route);form.setAttribute('method',params.method||'POST');if(core.csrf_token){_addInput(form,'csrf_token',core.csrf_token);}
for(const key in params){const value=params[key];if(Array.isArray(value)&&value.length){for(const val of value){_addInput(form,key,val);}}else{_addInput(form,key,value);}}
document.body.appendChild(form);form.submit();}
function removeLoader(){const $loader=$('#o_website_page_loader');if($loader){$loader.remove();}}
return{loadAnchors:loadAnchors,autocompleteWithPages:autocompleteWithPages,onceAllImagesLoaded:onceAllImagesLoaded,prompt:prompt,sendRequest:sendRequest,websiteDomain:websiteDomain,removeLoader:removeLoader,};});;
/* /website/static/src/js/content/website_root.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('website.root',function(require){'use strict';const ajax=require('web.ajax');const{_t}=require('web.core');var Dialog=require('web.Dialog');const KeyboardNavigationMixin=require('web.KeyboardNavigationMixin');const session=require('web.session');var publicRootData=require('web.public.root');require("web.zoomodoo");var websiteRootRegistry=publicRootData.publicRootRegistry;var WebsiteRoot=publicRootData.PublicRoot.extend(KeyboardNavigationMixin,{events:_.extend({},KeyboardNavigationMixin.events,publicRootData.PublicRoot.prototype.events||{},{'click .js_change_lang':'_onLangChangeClick','click .js_publish_management .js_publish_btn':'_onPublishBtnClick','click .js_multi_website_switch':'_onWebsiteSwitch','shown.bs.modal':'_onModalShown',}),custom_events:_.extend({},publicRootData.PublicRoot.prototype.custom_events||{},{'gmap_api_request':'_onGMapAPIRequest','gmap_api_key_request':'_onGMapAPIKeyRequest','ready_to_clean_for_save':'_onWidgetsStopRequest','seo_object_request':'_onSeoObjectRequest',}),init(){this.isFullscreen=false;KeyboardNavigationMixin.init.call(this,{autoAccessKeys:false,});return this._super(...arguments);},start:function(){KeyboardNavigationMixin.start.call(this);if(!this.$('.js_change_lang').length){var $links=this.$('.js_language_selector a:not([data-oe-id])');var m=$(_.min($links,function(l){return $(l).attr('href').length;})).attr('href');$links.each(function(){var $link=$(this);var t=$link.attr('href');var l=(t===m)?"default":t.split('/')[1];$link.data('lang',l).addClass('js_change_lang');});}
this.$('.zoomable img[data-zoom]').zoomOdoo();return this._super.apply(this,arguments);},destroy(){KeyboardNavigationMixin.destroy.call(this);return this._super(...arguments);},_getContext:function(context){var html=document.documentElement;return _.extend({'website_id':html.getAttribute('data-website-id')|0,},this._super.apply(this,arguments));},_getExtraContext:function(context){var html=document.documentElement;return _.extend({'editable':!!(html.dataset.editable||$('[data-oe-model]').length),'translatable':!!html.dataset.translatable,'edit_translations':!!html.dataset.edit_translations,},this._super.apply(this,arguments));},async _getGMapAPIKey(refetch){if(refetch||!this._gmapAPIKeyProm){this._gmapAPIKeyProm=new Promise(async resolve=>{const data=await this._rpc({route:'/website/google_maps_api_key',});resolve(JSON.parse(data).google_maps_api_key||'');});}
return this._gmapAPIKeyProm;},_getPublicWidgetsRegistry:function(options){var registry=this._super.apply(this,arguments);if(options.editableMode){return _.pick(registry,function(PublicWidget){return!PublicWidget.prototype.disabledInEditableMode;});}
return registry;},async _loadGMapAPI(editableMode,refetch){if(refetch||!this._gmapAPILoading){this._gmapAPILoading=new Promise(async resolve=>{const key=await this._getGMapAPIKey(refetch);window.odoo_gmap_api_post_load=(async function odoo_gmap_api_post_load(){await this._startWidgets(undefined,{editableMode:editableMode});resolve(key);}).bind(this);if(!key){if(!editableMode&&session.is_admin){this.displayNotification({type:'warning',sticky:true,message:$('').append($('',{text:_t("Cannot load google map.")}),$('
'),$('',{href:"/web#action=website.action_website_configuration",text:_t("Check your configuration."),}),)[0].outerHTML,});}
resolve(false);this._gmapAPILoading=false;return;}
await ajax.loadJS(`https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=places&callback=odoo_gmap_api_post_load&key=${key}`);});}
return this._gmapAPILoading;},_toggleFullscreen(state){this.isFullscreen=state;document.body.classList.add('o_fullscreen_transition');document.body.classList.toggle('o_fullscreen',this.isFullscreen);document.body.style.overflowX='hidden';let resizing=true;window.requestAnimationFrame(function resizeFunction(){window.dispatchEvent(new Event('resize'));if(resizing){window.requestAnimationFrame(resizeFunction);}});let stopResizing;const onTransitionEnd=ev=>{if(ev.target===document.body&&ev.propertyName==='padding-top'){stopResizing();}};stopResizing=()=>{resizing=false;document.body.style.overflowX='';document.body.removeEventListener('transitionend',onTransitionEnd);document.body.classList.remove('o_fullscreen_transition');};document.body.addEventListener('transitionend',onTransitionEnd);window.setTimeout(()=>stopResizing(),500);},_onWidgetsStartRequest:function(ev){ev.data.options=_.clone(ev.data.options||{});ev.data.options.editableMode=ev.data.editableMode;this._super.apply(this,arguments);},_onLangChangeClick:function(ev){ev.preventDefault();var $target=$(ev.currentTarget);var redirect={lang:$target.data('url_code'),url:encodeURIComponent($target.attr('href').replace(/[&?]edit_translations[^&?]+/,'')),hash:encodeURIComponent(window.location.hash)};window.location.href=_.str.sprintf("/website/lang/%(lang)s?r=%(url)s%(hash)s",redirect);},async _onGMapAPIRequest(ev){ev.stopPropagation();const apiKey=await this._loadGMapAPI(ev.data.editableMode,ev.data.refetch);ev.data.onSuccess(apiKey);},async _onGMapAPIKeyRequest(ev){ev.stopPropagation();const apiKey=await this._getGMapAPIKey(ev.data.refetch);ev.data.onSuccess(apiKey);},_onSeoObjectRequest:function(ev){var res=this._unslugHtmlDataObject('seo-object');ev.data.callback(res);},_unslugHtmlDataObject:function(dataAttr){var repr=$('html').data(dataAttr);var match=repr&&repr.match(/(.+)\((\d+),(.*)\)/);if(!match){return null;}
return{model:match[1],id:match[2]|0,};},_onPublishBtnClick:function(ev){ev.preventDefault();if(document.body.classList.contains('editor_enable')){return;}
var self=this;var $data=$(ev.currentTarget).parents(".js_publish_management:first");this._rpc({route:$data.data('controller')||'/website/publish',params:{id:+$data.data('id'),object:$data.data('object'),},}).then(function(result){$data.toggleClass("css_unpublished css_published");$data.find('input').prop("checked",result);$data.parents("[data-publish]").attr("data-publish",+result?'on':'off');if(result){self.displayNotification({type:'success',message:$data.data('description')?_.str.sprintf(_t("You've published your %s."),$data.data('description')):_t("Published with success."),});}});},_onWebsiteSwitch:function(ev){var websiteId=ev.currentTarget.getAttribute('website-id');var websiteDomain=ev.currentTarget.getAttribute('domain');let url=`/website/force/${websiteId}`;if(websiteDomain&&window.location.hostname!==websiteDomain){url=websiteDomain+url;}
const path=window.location.pathname+window.location.search+window.location.hash;window.location.href=$.param.querystring(url,{'path':path});},_onModalShown:function(ev){$(ev.target).addClass('modal_shown');},_onKeyDown(ev){if(!session.user_id){return;}
if(ev.keyCode!==$.ui.keyCode.ESCAPE||!document.body.contains(ev.target)||ev.target.closest('.modal')){return KeyboardNavigationMixin._onKeyDown.apply(this,arguments);}
this._toggleFullscreen(!this.isFullscreen);},});return{WebsiteRoot:WebsiteRoot,websiteRootRegistry:websiteRootRegistry,};});;
/* /website/static/src/js/content/compatibility.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('website.content.compatibility',function(require){'use strict';require('web.dom_ready');var browser=_.findKey($.browser,function(v){return v===true;});if($.browser.mozilla&&+$.browser.version.replace(/^([0-9]+\.[0-9]+).*/,'\$1')<20){browser='msie';}
browser+=(','+$.browser.version);var mobileRegex=/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i;if(mobileRegex.test(window.navigator.userAgent.toLowerCase())){browser+=',mobile';}
document.documentElement.setAttribute('data-browser',browser);var htmlStyle=document.documentElement.style;var isFlexSupported=(('flexWrap'in htmlStyle)||('WebkitFlexWrap'in htmlStyle)||('msFlexWrap'in htmlStyle));if(!isFlexSupported){document.documentElement.setAttribute('data-no-flex','');}
return{browser:browser,isFlexSupported:isFlexSupported,};});;
/* /website/static/src/js/content/menu.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('website.content.menu',function(require){'use strict';const config=require('web.config');var dom=require('web.dom');var publicWidget=require('web.public.widget');var wUtils=require('website.utils');var animations=require('website.content.snippets.animation');const extraMenuUpdateCallbacks=[];const BaseAnimatedHeader=animations.Animation.extend({disabledInEditableMode:false,effects:[{startEvents:'scroll',update:'_updateHeaderOnScroll',},{startEvents:'resize',update:'_updateHeaderOnResize',}],init:function(){this._super(...arguments);this.fixedHeader=false;this.scrolledPoint=0;this.hasScrolled=false;},start:function(){this.$main=this.$el.next('main');this.isOverlayHeader=!!this.$el.closest('.o_header_overlay, .o_header_overlay_theme').length;this.$dropdowns=this.$el.find('.dropdown, .dropdown-menu');this.$navbarCollapses=this.$el.find('.navbar-collapse');this.$navbarCollapses.on('show.bs.collapse.BaseAnimatedHeader',function(){if(config.device.size_class<=config.device.SIZES.SM){$(document.body).addClass('overflow-hidden');}}).on('hide.bs.collapse.BaseAnimatedHeader',function(){$(document.body).removeClass('overflow-hidden');});this._transitionCount=0;this.$el.on('odoo-transitionstart.BaseAnimatedHeader',()=>this._adaptToHeaderChangeLoop(1));this.$el.on('transitionend.BaseAnimatedHeader',()=>this._adaptToHeaderChangeLoop(-1));return this._super(...arguments);},destroy:function(){this._toggleFixedHeader(false);this.$el.removeClass('o_header_affixed o_header_is_scrolled o_header_no_transition');this.$navbarCollapses.off('.BaseAnimatedHeader');this.$el.off('.BaseAnimatedHeader');this._super(...arguments);},_adaptFixedHeaderPosition(){dom.compensateScrollbar(this.el,this.fixedHeader,false,'right');},_adaptToHeaderChange:function(){this._updateMainPaddingTop();this.el.classList.toggle('o_top_fixed_element',this.fixedHeader&&this._isShown());for(const callback of extraMenuUpdateCallbacks){callback();}},_adaptToHeaderChangeLoop:function(addCount=0){this._adaptToHeaderChange();this._transitionCount+=addCount;this._transitionCount=Math.max(0,this._transitionCount);if(this._transitionCount>0){window.requestAnimationFrame(()=>this._adaptToHeaderChangeLoop());if(addCount!==0){clearTimeout(this._changeLoopTimer);this._changeLoopTimer=setTimeout(()=>{this._adaptToHeaderChangeLoop(-this._transitionCount);},500);}}else{clearTimeout(this._changeLoopTimer);}},_computeTopGap(){return 0;},_isShown(){return true;},_toggleFixedHeader:function(useFixed=true){this.fixedHeader=useFixed;this._adaptToHeaderChange();this.el.classList.toggle('o_header_affixed',useFixed);this._adaptFixedHeaderPosition();},_updateMainPaddingTop:function(){this.headerHeight=this.$el.outerHeight();this.topGap=this._computeTopGap();if(this.isOverlayHeader){return;}
this.$main.css('padding-top',this.fixedHeader?this.headerHeight:'');},_updateHeaderOnScroll:function(scroll){if(!this.hasScrolled){this.hasScrolled=true;if(scroll>0){this.$el.addClass('o_header_no_transition');}}else{this.$el.removeClass('o_header_no_transition');}
const headerIsScrolled=(scroll>this.scrolledPoint);if(this.headerIsScrolled!==headerIsScrolled){this.el.classList.toggle('o_header_is_scrolled',headerIsScrolled);this.$el.trigger('odoo-transitionstart');this.headerIsScrolled=headerIsScrolled;}
this.$dropdowns.removeClass('show');this.$navbarCollapses.removeClass('show').attr('aria-expanded',false);},_updateHeaderOnResize:function(){this._adaptFixedHeaderPosition();if(document.body.classList.contains('overflow-hidden')&&config.device.size_class>config.device.SIZES.SM){document.body.classList.remove('overflow-hidden');this.$el.find('.navbar-collapse').removeClass('show');}},});publicWidget.registry.StandardAffixedHeader=BaseAnimatedHeader.extend({selector:'header.o_header_standard:not(.o_header_sidebar)',init:function(){this._super(...arguments);this.fixedHeaderShow=false;this.scrolledPoint=300;},start:function(){this.headerHeight=this.$el.outerHeight();return this._super.apply(this,arguments);},_isShown(){return!this.fixedHeader||this.fixedHeaderShow;},_updateHeaderOnScroll:function(scroll){this._super(...arguments);const mainPosScrolled=(scroll>this.headerHeight+this.topGap);const reachPosScrolled=(scroll>this.scrolledPoint+this.topGap);if(this.fixedHeader!==mainPosScrolled){this.$el.css('transform',mainPosScrolled?'translate(0, -100%)':'');void this.$el[0].offsetWidth;this._toggleFixedHeader(mainPosScrolled);}
if(this.fixedHeaderShow!==reachPosScrolled){this.$el.css('transform',reachPosScrolled?`translate(0, -${this.topGap}px)`:'translate(0, -100%)');this.fixedHeaderShow=reachPosScrolled;this._adaptToHeaderChange();}},});publicWidget.registry.FixedHeader=BaseAnimatedHeader.extend({selector:'header.o_header_fixed',_updateHeaderOnScroll:function(scroll){this._super(...arguments);if(scroll>(this.scrolledPoint+this.topGap)){if(!this.$el.hasClass('o_header_affixed')){this.$el.css('transform',`translate(0, -${this.topGap}px)`);void this.$el[0].offsetWidth;this._toggleFixedHeader(true);}}else{this._toggleFixedHeader(false);void this.$el[0].offsetWidth;this.$el.css('transform','');}},});const BaseDisappearingHeader=publicWidget.registry.FixedHeader.extend({init:function(){this._super(...arguments);this.scrollingDownwards=true;this.hiddenHeader=false;this.position=0;this.atTop=true;this.checkPoint=0;this.scrollOffsetLimit=200;},destroy:function(){this._showHeader();this._super.apply(this,arguments);},_hideHeader:function(){this.$el.trigger('odoo-transitionstart');},_isShown(){return!this.fixedHeader||!this.hiddenHeader;},_showHeader:function(){this.$el.trigger('odoo-transitionstart');},_updateHeaderOnScroll:function(scroll){this._super(...arguments);const scrollingDownwards=(scroll>this.position);const atTop=(scroll<=0);if(scrollingDownwards!==this.scrollingDownwards){this.checkPoint=scroll;}
this.scrollingDownwards=scrollingDownwards;this.position=scroll;this.atTop=atTop;if(scrollingDownwards){if(!this.hiddenHeader&&scroll-this.checkPoint>(this.scrollOffsetLimit+this.topGap)){this.hiddenHeader=true;this._hideHeader();}}else{if(this.hiddenHeader&&scroll-this.checkPoint<-(this.scrollOffsetLimit+this.topGap)/2){this.hiddenHeader=false;this._showHeader();}}
if(atTop&&!this.atTop){this._showHeader();}},});publicWidget.registry.DisappearingHeader=BaseDisappearingHeader.extend({selector:'header.o_header_disappears',_hideHeader:function(){this._super(...arguments);this.$el.css('transform','translate(0, -100%)');},_showHeader:function(){this._super(...arguments);this.$el.css('transform',this.atTop?'':`translate(0, -${this.topGap}px)`);},});publicWidget.registry.FadeOutHeader=BaseDisappearingHeader.extend({selector:'header.o_header_fade_out',_hideHeader:function(){this._super(...arguments);this.$el.stop(false,true).fadeOut();},_showHeader:function(){this._super(...arguments);this.$el.css('transform',this.atTop?'':`translate(0, -${this.topGap}px)`);this.$el.stop(false,true).fadeIn();},});publicWidget.registry.autohideMenu=publicWidget.Widget.extend({selector:'header#top',disabledInEditableMode:false,async start(){await this._super(...arguments);this.$topMenu=this.$('#top_menu');this.noAutohide=this.$el.is('.o_no_autohide_menu');if(!this.noAutohide){await wUtils.onceAllImagesLoaded(this.$('.navbar'),this.$('.o_mega_menu, .o_offcanvas_logo_container, .dropdown-menu .o_lang_flag'));var $window=$(window);$window.on('load.autohideMenu',function(){$window.trigger('resize');});dom.initAutoMoreMenu(this.$topMenu,{unfoldable:'.divider, .divider ~ li, .o_no_autohide_item'});}
this.$topMenu.removeClass('o_menu_loading');this.$topMenu.trigger('menu_loaded');},destroy(){this._super(...arguments);if(!this.noAutohide&&this.$topMenu){$(window).off('.autohideMenu');dom.destroyAutoMoreMenu(this.$topMenu);}},});publicWidget.registry.menuDirection=publicWidget.Widget.extend({selector:'header .navbar .nav',disabledInEditableMode:false,events:{'show.bs.dropdown':'_onDropdownShow',},start:function(){this.defaultAlignment=this.$el.is('.ml-auto, .ml-auto ~ *')?'right':'left';return this._super.apply(this,arguments);},_checkOpening:function(alignment,liOffset,liWidth,menuWidth,pageWidth){if(alignment==='left'){return(liOffset+menuWidth<=pageWidth);}else{return(liOffset+liWidth-menuWidth>=0);}},_onDropdownShow:function(ev){var $li=$(ev.target);var $menu=$li.children('.dropdown-menu');var liOffset=$li.offset().left;var liWidth=$li.outerWidth();var menuWidth=$menu.outerWidth();var pageWidth=$('#wrapwrap').outerWidth();$menu.removeClass('dropdown-menu-left dropdown-menu-right');var alignment=this.defaultAlignment;if($li.nextAll(':visible').length===0){alignment='right';}
for(var i=0;i<2;i++){if(!this._checkOpening(alignment,liOffset,liWidth,menuWidth,pageWidth)){alignment=(alignment==='left'?'right':'left');}}
$menu.addClass('dropdown-menu-'+alignment);},});publicWidget.registry.hoverableDropdown=animations.Animation.extend({selector:'header.o_hoverable_dropdown',disabledInEditableMode:false,effects:[{startEvents:'resize',update:'_dropdownHover',}],events:{'mouseenter .dropdown':'_onMouseEnter','mouseleave .dropdown':'_onMouseLeave',},start:function(){this.$dropdownMenus=this.$el.find('.dropdown-menu');this.$dropdownToggles=this.$el.find('.dropdown-toggle');this._dropdownHover();return this._super.apply(this,arguments);},_dropdownHover:function(){if(config.device.size_class>config.device.SIZES.SM){this.$dropdownMenus.css('margin-top','0');this.$dropdownMenus.css('top','unset');}else{this.$dropdownMenus.css('margin-top','');this.$dropdownMenus.css('top','');}},_onMouseEnter:function(ev){if(config.device.size_class<=config.device.SIZES.SM){return;}
const $dropdown=$(ev.currentTarget);$dropdown.addClass('show');$dropdown.find(this.$dropdownToggles).attr('aria-expanded','true');$dropdown.find(this.$dropdownMenus).addClass('show');},_onMouseLeave:function(ev){if(config.device.size_class<=config.device.SIZES.SM){return;}
const $dropdown=$(ev.currentTarget);$dropdown.removeClass('show');$dropdown.find(this.$dropdownToggles).attr('aria-expanded','false');$dropdown.find(this.$dropdownMenus).removeClass('show');},});publicWidget.registry.HeaderMainCollapse=publicWidget.Widget.extend({selector:'header#top',events:{'show.bs.collapse #top_menu_collapse':'_onCollapseShow','hidden.bs.collapse #top_menu_collapse':'_onCollapseHidden',},_onCollapseShow(){this.el.classList.add('o_top_menu_collapse_shown');},_onCollapseHidden(){this.el.classList.remove('o_top_menu_collapse_shown');},});return{extraMenuUpdateCallbacks:extraMenuUpdateCallbacks,};});;
/* /website/static/src/js/content/snippets.animation.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('website.content.snippets.animation',function(require){'use strict';var Class=require('web.Class');var config=require('web.config');var core=require('web.core');const dom=require('web.dom');var mixins=require('web.mixins');var publicWidget=require('web.public.widget');var utils=require('web.utils');var qweb=core.qweb;window.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame;window.cancelAnimationFrame=window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||window.msCancelAnimationFrame||window.oCancelAnimationFrame;if(!window.performance||!window.performance.now){window.performance={now:function(){return Date.now();}};}
publicWidget.Widget.include({disabledInEditableMode:true,edit_events:null,read_events:null,init:function(parent,options){this._super.apply(this,arguments);this.editableMode=this.options.editableMode||false;var extraEvents=this.editableMode?this.edit_events:this.read_events;if(extraEvents){this.events=_.extend({},this.events||{},extraEvents);}},});var AnimationEffect=Class.extend(mixins.ParentedMixin,{init:function(parent,updateCallback,startEvents,$startTarget,options){mixins.ParentedMixin.init.call(this);this.setParent(parent);options=options||{};this._minFrameTime=1000/(options.maxFPS||100);this._updateCallback=updateCallback;this.startEvents=startEvents||'scroll';const mainScrollingElement=$().getScrollingElement()[0];const mainScrollingTarget=mainScrollingElement===document.documentElement?window:mainScrollingElement;this.$startTarget=$($startTarget?$startTarget:this.startEvents==='scroll'?mainScrollingTarget:window);if(options.getStateCallback){this._getStateCallback=options.getStateCallback;}else if(this.startEvents==='scroll'&&this.$startTarget[0]===mainScrollingTarget){const $scrollable=this.$startTarget;this._getStateCallback=function(){return $scrollable.scrollTop();};}else if(this.startEvents==='resize'&&this.$startTarget[0]===window){this._getStateCallback=function(){return{width:window.innerWidth,height:window.innerHeight,};};}else{this._getStateCallback=function(){return undefined;};}
this.endEvents=options.endEvents||false;this.$endTarget=options.$endTarget?$(options.$endTarget):this.$startTarget;this._updateCallback=this._updateCallback.bind(parent);this._getStateCallback=this._getStateCallback.bind(parent);this._uid='_animationEffect'+_.uniqueId();this.startEvents=_processEvents(this.startEvents,this._uid);if(this.endEvents){this.endEvents=_processEvents(this.endEvents,this._uid);}
function _processEvents(events,namespace){events=events.split(' ');return _.each(events,function(e,index){events[index]+=('.'+namespace);}).join(' ');}},destroy:function(){mixins.ParentedMixin.destroy.call(this);this.stop();},start:function(){this._paused=false;this._rafID=window.requestAnimationFrame((function(t){this._update(t);this._paused=true;}).bind(this));if(this.endEvents){this.$startTarget.on(this.startEvents,(function(e){if(this._paused){_.defer(this.play.bind(this,e));}}).bind(this));this.$endTarget.on(this.endEvents,(function(){if(!this._paused){_.defer(this.pause.bind(this));}}).bind(this));}else{var pauseTimer=null;this.$startTarget.on(this.startEvents,_.throttle((function(e){this.play(e);clearTimeout(pauseTimer);pauseTimer=_.delay((function(){this.pause();pauseTimer=null;}).bind(this),2000);}).bind(this),250,{trailing:false}));}},stop:function(){this.$startTarget.off(this.startEvents);if(this.endEvents){this.$endTarget.off(this.endEvents);}
this.pause();},play:function(e){this._newEvent=e;if(!this._paused){return;}
this._paused=false;this._rafID=window.requestAnimationFrame(this._update.bind(this));this._lastUpdateTimestamp=undefined;},pause:function(){if(this._paused){return;}
this._paused=true;window.cancelAnimationFrame(this._rafID);this._lastUpdateTimestamp=undefined;},_update:function(timestamp){if(this._paused){return;}
this._rafID=window.requestAnimationFrame(this._update.bind(this));var elapsedTime=0;if(this._lastUpdateTimestamp){elapsedTime=timestamp-this._lastUpdateTimestamp;if(elapsedTimethis._computeHeights());this._computeHeights();this.$target.carousel(this.editableMode?'pause':undefined);$(window).on('resize.slider',_.debounce(()=>this._computeHeights(),250));return this._super.apply(this,arguments);},destroy:function(){this._super.apply(this,arguments);this.$('img').off('.slider');this.$target.carousel('pause');this.$target.removeData('bs.carousel');_.each(this.$('.carousel-item'),function(el){$(el).css('min-height','');});$(window).off('.slider');},_computeHeights:function(){var maxHeight=0;var $items=this.$('.carousel-item');$items.css('min-height','');_.each($items,function(el){var $item=$(el);var isActive=$item.hasClass('active');$item.addClass('active');var height=$item.outerHeight();if(height>maxHeight){maxHeight=height;}
$item.toggleClass('active',isActive);});$items.css('min-height',maxHeight);},_onContentChanged:function(ev){this._computeHeights();},});registry.Parallax=Animation.extend({selector:'.parallax',disabledInEditableMode:false,effects:[{startEvents:'scroll',update:'_onWindowScroll',}],start:function(){this._rebuild();$(window).on('resize.animation_parallax',_.debounce(this._rebuild.bind(this),500));return this._super.apply(this,arguments);},destroy:function(){this._super.apply(this,arguments);$(window).off('.animation_parallax');},_rebuild:function(){this.$bg=this.$('> .s_parallax_bg');this.speed=parseFloat(this.$target.attr('data-scroll-background-ratio')||0);var noParallaxSpeed=(this.speed===0||this.speed===1);if(noParallaxSpeed){this.$bg.css({transform:'',top:'',bottom:'',});return;}
this.viewport=document.body.clientHeight-$('#wrapwrap').position().top;this.visibleArea=[this.$target.offset().top];this.visibleArea.push(this.visibleArea[0]+this.$target.innerHeight()+this.viewport);this.ratio=this.speed*(this.viewport/10);const absoluteRatio=Math.abs(this.ratio);this.$bg.css({top:-absoluteRatio,bottom:-absoluteRatio,});},_onWindowScroll:function(scrollOffset){if(this.speed===0||this.speed===1){return;}
var vpEndOffset=scrollOffset+this.viewport;if(vpEndOffset>=this.visibleArea[0]&&vpEndOffset<=this.visibleArea[1]){this.$bg.css('transform','translateY('+_getNormalizedPosition.call(this,vpEndOffset)+'px)');}
function _getNormalizedPosition(pos){var r=(pos-this.visibleArea[1])/(this.visibleArea[0]-this.visibleArea[1]);return Math.round(this.ratio*(2*r-1));}},});registry.mediaVideo=publicWidget.Widget.extend({selector:'.media_iframe_video',start:function(){var def=this._super.apply(this,arguments);if(this.$target.children('iframe').length){return def;}
this.$target.empty();this.$target.append('
'+'
');this.$target.append($('',{src:_.escape(this.$target.data('oe-expression')||this.$target.data('src')),frameborder:'0',allowfullscreen:'allowfullscreen',sandbox:'allow-scripts allow-same-origin',}));return def;},});registry.backgroundVideo=publicWidget.Widget.extend({selector:'.o_background_video',xmlDependencies:['/website/static/src/xml/website.background.video.xml'],disabledInEditableMode:false,start:function(){var proms=[this._super(...arguments)];this.videoSrc=this.el.dataset.bgVideoSrc;this.iframeID=_.uniqueId('o_bg_video_iframe_');this.isYoutubeVideo=this.videoSrc.indexOf('youtube')>=0;this.isMobileEnv=config.device.size_class<=config.device.SIZES.LG&&config.device.touch;if(this.isYoutubeVideo&&this.isMobileEnv){this.videoSrc=this.videoSrc+"&enablejsapi=1";if(!window.YT){var oldOnYoutubeIframeAPIReady=window.onYouTubeIframeAPIReady;proms.push(new Promise(resolve=>{window.onYouTubeIframeAPIReady=()=>{if(oldOnYoutubeIframeAPIReady){oldOnYoutubeIframeAPIReady();}
return resolve();};}));$('',{src:'https://www.youtube.com/iframe_api',}).appendTo('head');}}
var throttledUpdate=_.throttle(()=>this._adjustIframe(),50);var $dropdownMenu=this.$el.closest('.dropdown-menu');if($dropdownMenu.length){this.$dropdownParent=$dropdownMenu.parent();this.$dropdownParent.on('shown.bs.dropdown.backgroundVideo',throttledUpdate);}
$(window).on('resize.'+this.iframeID,throttledUpdate);return Promise.all(proms).then(()=>this._appendBgVideo());},destroy:function(){this._super.apply(this,arguments);if(this.$dropdownParent){this.$dropdownParent.off('.backgroundVideo');}
$(window).off('resize.'+this.iframeID);if(this.$bgVideoContainer){this.$bgVideoContainer.remove();}},_adjustIframe:function(){if(!this.$iframe){return;}
this.$iframe.removeClass('show');var wrapperWidth=this.$target.innerWidth();var wrapperHeight=this.$target.innerHeight();var relativeRatio=(wrapperWidth/wrapperHeight)/(16/9);var style={};if(relativeRatio>=1.0){style['width']='100%';style['height']=(relativeRatio*100)+'%';style['left']='0';style['top']=(-(relativeRatio-1.0)/2*100)+'%';}else{style['width']=((1/relativeRatio)*100)+'%';style['height']='100%';style['left']=(-((1/relativeRatio)-1.0)/2*100)+'%';style['top']='0';}
this.$iframe.css(style);void this.$iframe[0].offsetWidth;this.$iframe.addClass('show');},_appendBgVideo:function(){var $oldContainer=this.$bgVideoContainer||this.$('> .o_bg_video_container');this.$bgVideoContainer=$(qweb.render('website.background.video',{videoSrc:this.videoSrc,iframeID:this.iframeID,}));this.$iframe=this.$bgVideoContainer.find('.o_bg_video_iframe');this.$iframe.one('load',()=>{this.$bgVideoContainer.find('.o_bg_video_loading').remove();});this.$bgVideoContainer.prependTo(this.$target);$oldContainer.remove();this._adjustIframe();if(this.isMobileEnv&&this.isYoutubeVideo){new window.YT.Player(this.iframeID,{events:{onReady:ev=>ev.target.playVideo(),}});}},});registry.socialShare=publicWidget.Widget.extend({selector:'.oe_social_share',xmlDependencies:['/website/static/src/xml/website.share.xml'],events:{'mouseenter':'_onMouseEnter',},_bindSocialEvent:function(){this.$('.oe_social_facebook').click($.proxy(this._renderSocial,this,'facebook'));this.$('.oe_social_twitter').click($.proxy(this._renderSocial,this,'twitter'));this.$('.oe_social_linkedin').click($.proxy(this._renderSocial,this,'linkedin'));},_render:function(){this.$el.popover({content:qweb.render('website.social_hover',{medias:this.socialList}),placement:'bottom',container:this.$el,html:true,trigger:'manual',animation:false,}).popover("show");this.$el.off('mouseleave.socialShare').on('mouseleave.socialShare',function(){var self=this;setTimeout(function(){if(!$(".popover:hover").length){$(self).popover('dispose');}},200);});},_renderSocial:function(social){var url=this.$el.data('urlshare')||document.URL.split(/[?#]/)[0];url=encodeURIComponent(url);var title=document.title.split(" | ")[0];var hashtags=' #'+document.title.split(" | ")[1].replace(' ','')+' '+this.hashtags;var socialNetworks={'facebook':'https://www.facebook.com/sharer/sharer.php?u='+url,'twitter':'https://twitter.com/intent/tweet?original_referer='+url+'&text='+encodeURIComponent(title+hashtags+' - ')+url,'linkedin':'https://www.linkedin.com/sharing/share-offsite/?url='+url,};if(!_.contains(_.keys(socialNetworks),social)){return;}
var wHeight=500;var wWidth=500;window.open(socialNetworks[social],'','menubar=no, toolbar=no, resizable=yes, scrollbar=yes, height='+wHeight+',width='+wWidth);},_onMouseEnter:function(){var social=this.$el.data('social');this.socialList=social?social.split(','):['facebook','twitter','linkedin'];this.hashtags=this.$el.data('hashtags')||'';this._render();this._bindSocialEvent();},});registry.anchorSlide=publicWidget.Widget.extend({selector:'a[href^="/"][href*="#"], a[href^="#"]',events:{'click':'_onAnimateClick',},async _scrollTo($el,scrollValue='true'){return dom.scrollTo($el[0],{duration:scrollValue==='true'?500:0,extraOffset:this._computeExtraOffset(),});},_computeExtraOffset(){return 0;},_onAnimateClick:function(ev){if(this.$target[0].pathname!==window.location.pathname){return;}
var hash=this.$target[0].hash;if(!utils.isValidAnchor(hash)){return;}
var $anchor=$(hash);const scrollValue=$anchor.attr('data-anchor');if(!$anchor.length||!scrollValue){return;}
ev.preventDefault();this._scrollTo($anchor,scrollValue);},});registry.FullScreenHeight=publicWidget.Widget.extend({selector:'.o_full_screen_height',disabledInEditableMode:false,start(){if(this.$el.outerHeight()>this._computeIdealHeight()){this._adaptSize();$(window).on('resize.FullScreenHeight',_.debounce(()=>this._adaptSize(),250));}
return this._super(...arguments);},destroy(){this._super(...arguments);$(window).off('.FullScreenHeight');this.el.style.setProperty('min-height','');},_adaptSize(){const height=this._computeIdealHeight();this.el.style.setProperty('min-height',`${height}px`,'important');},_computeIdealHeight(){const windowHeight=$(window).outerHeight();const firstContentEl=$('#wrapwrap > main > :first-child')[0];const mainTopPos=firstContentEl.getBoundingClientRect().top+dom.closestScrollable(firstContentEl.parentNode).scrollTop;return(windowHeight-mainTopPos);},});registry.ScrollButton=registry.anchorSlide.extend({selector:'.o_scroll_button',_onAnimateClick:function(ev){ev.preventDefault();const $nextElement=this.$el.closest('section').next();if($nextElement.length){this._scrollTo($nextElement);}},});registry.FooterSlideout=publicWidget.Widget.extend({selector:'#wrapwrap:has(.o_footer_slideout)',disabledInEditableMode:false,async start(){const $main=this.$('> main');const slideoutEffect=$main.outerHeight()>=$(window).outerHeight();this.el.classList.toggle('o_footer_effect_enable',slideoutEffect);this.__pixelEl=document.createElement('div');this.__pixelEl.style.width=`1px`;this.__pixelEl.style.height=`1px`;this.__pixelEl.style.marginTop=`-1px`;this.el.appendChild(this.__pixelEl);return this._super(...arguments);},destroy(){this._super(...arguments);this.el.classList.remove('o_footer_effect_enable');this.__pixelEl.remove();},});registry.HeaderHamburgerFull=publicWidget.Widget.extend({selector:'header:has(.o_header_hamburger_full_toggler):not(:has(.o_offcanvas_menu_toggler))',events:{'click .o_header_hamburger_full_toggler':'_onToggleClick',},_onToggleClick(){document.body.classList.add('overflow-hidden');setTimeout(()=>$(window).trigger('scroll'),100);},});registry.BottomFixedElement=publicWidget.Widget.extend({selector:'#wrapwrap',async start(){this.$scrollingElement=$().getScrollingElement();this.__hideBottomFixedElements=_.debounce(()=>this._hideBottomFixedElements(),500);this.$scrollingElement.on('scroll.bottom_fixed_element',this.__hideBottomFixedElements);$(window).on('resize.bottom_fixed_element',this.__hideBottomFixedElements);return this._super(...arguments);},destroy(){this._super(...arguments);this.$scrollingElement.off('.bottom_fixed_element');$(window).off('.bottom_fixed_element');$('.o_bottom_fixed_element').removeClass('o_bottom_fixed_element_hidden');},_hideBottomFixedElements(){const $bottomFixedElements=$('.o_bottom_fixed_element');if(!$bottomFixedElements.length){return;}
$bottomFixedElements.removeClass('o_bottom_fixed_element_hidden');if((this.$scrollingElement[0].offsetHeight+this.$scrollingElement[0].scrollTop)>=(this.$scrollingElement[0].scrollHeight-2)){const buttonEls=[...this.$('.btn:visible')];for(const el of $bottomFixedElements){if(buttonEls.some(button=>dom.areColliding(button,el))){el.classList.add('o_bottom_fixed_element_hidden');}}}},});return{Widget:publicWidget.Widget,Animation:Animation,registry:registry,Class:Animation,};});;
/* /website/static/src/js/menu/navbar.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('website.navbar',function(require){'use strict';var core=require('web.core');var dom=require('web.dom');var publicWidget=require('web.public.widget');var concurrency=require('web.concurrency');var Widget=require('web.Widget');var websiteRootData=require('website.root');var websiteNavbarRegistry=new publicWidget.RootWidgetRegistry();var WebsiteNavbar=publicWidget.RootWidget.extend({xmlDependencies:['/website/static/src/xml/website.xml'],events:_.extend({},publicWidget.RootWidget.prototype.events||{},{'click [data-action]':'_onActionMenuClick','mouseover > ul > li.dropdown:not(.show)':'_onMenuHovered','click .o_mobile_menu_toggle':'_onMobileMenuToggleClick','mouseenter #oe_applications:not(:has(.dropdown-item))':'_onOeApplicationsHovered','show.bs.dropdown #oe_applications:not(:has(.dropdown-item))':'_onOeApplicationsShow',}),custom_events:_.extend({},publicWidget.RootWidget.prototype.custom_events||{},{'action_demand':'_onActionDemand','edit_mode':'_onEditMode','readonly_mode':'_onReadonlyMode','ready_to_save':'_onSave',}),init:function(){this._super.apply(this,arguments);var self=this;var initPromise=new Promise(function(resolve){self.resolveInit=resolve;});this._widgetDefs=[initPromise];},start:function(){var self=this;dom.initAutoMoreMenu(this.$('ul.o_menu_sections'),{maxWidth:function(){return self.$el.width()
-(self.$('.o_menu_systray').outerWidth(true)||0)
-(self.$('ul#oe_applications').outerWidth(true)||0)
-(self.$('.o_menu_toggle').outerWidth(true)||0)
-(self.$('.o_menu_brand').outerWidth(true)||0);},});return this._super.apply(this,arguments).then(function(){self.resolveInit();});},_attachComponent:function(){var def=this._super.apply(this,arguments);this._widgetDefs.push(def);return def;},_getRegistry:function(){return websiteNavbarRegistry;},_handleAction:function(actionName,params,_i){var self=this;return this._whenReadyForActions().then(function(){var defs=[];_.each(self._widgets,function(w){if(!w.handleAction){return;}
var def=w.handleAction(actionName,params);if(def!==null){defs.push(def);}});if(!defs.length){if(_i>50){console.warn(_.str.sprintf("Action '%s' was not able to be handled.",actionName));return Promise.reject();}
return concurrency.delay(100).then(function(){return self._handleAction(actionName,params,(_i||0)+1);});}
return Promise.all(defs).then(function(values){if(values.length===1){return values[0];}
return values;});});},async _loadAppMenus(){if(!this._loadAppMenusProm){this._loadAppMenusProm=this._rpc({model:'ir.ui.menu',method:'load_menus_root',args:[],});const result=await this._loadAppMenusProm;const menus=core.qweb.render('website.oe_applications_menu',{'menu_data':result,});this.$('#oe_applications .dropdown-menu').html(menus);}
return this._loadAppMenusProm;},_whenReadyForActions:function(){return Promise.all(this._widgetDefs);},_onOeApplicationsHovered:function(){this._loadAppMenus();},_onOeApplicationsShow:function(){this._loadAppMenus();},_onActionMenuClick:function(ev){const restore=dom.addButtonLoadingEffect(ev.currentTarget);this._handleAction($(ev.currentTarget).data('action')).then(restore).guardedCatch(restore);},_onActionDemand:function(ev){var def=this._handleAction(ev.data.actionName,ev.data.params);if(ev.data.onSuccess){def.then(ev.data.onSuccess);}
if(ev.data.onFailure){def.guardedCatch(ev.data.onFailure);}},_onEditMode:function(){this.$el.addClass('editing_mode');this.do_hide();},_onMenuHovered:function(ev){var $opened=this.$('> ul > li.dropdown.show');if($opened.length){$opened.find('.dropdown-toggle').dropdown('toggle');$(ev.currentTarget).find('.dropdown-toggle').dropdown('toggle');}},_onMobileMenuToggleClick:function(){this.$el.parent().toggleClass('o_mobile_menu_opened');},_onReadonlyMode:function(){this.$el.removeClass('editing_mode');this.do_show();},_onSave:function(ev){ev.data.defs.push(this._handleAction('on_save'));},});var WebsiteNavbarActionWidget=Widget.extend({actions:{},handleAction:function(actionName,params){var action=this[this.actions[actionName]];if(action){return Promise.resolve(action.apply(this,params||[]));}
return null;},});websiteRootData.websiteRootRegistry.add(WebsiteNavbar,'#oe_main_menu_navbar');return{WebsiteNavbar:WebsiteNavbar,websiteNavbarRegistry:websiteNavbarRegistry,WebsiteNavbarActionWidget:WebsiteNavbarActionWidget,};});;
/* /website/static/src/js/show_password.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('website.show_password',function(require){'use strict';var publicWidget=require('web.public.widget');publicWidget.registry.ShowPassword=publicWidget.Widget.extend({selector:'#showPass',events:{'mousedown':'_onShowText','touchstart':'_onShowText',},destroy:function(){this._super(...arguments);$('body').off(".ShowPassword");},_onShowPassword:function(){this.$el.closest('.input-group').find('#password').attr('type','password');},_onShowText:function(){$('body').one('mouseup.ShowPassword touchend.ShowPassword',this._onShowPassword.bind(this));this.$el.closest('.input-group').find('#password').attr('type','text');},});return publicWidget.registry.ShowPassword;});;
/* /website/static/src/js/post_link.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('website.post_link',function(require){'use strict';const publicWidget=require('web.public.widget');const wUtils=require('website.utils');publicWidget.registry.postLink=publicWidget.Widget.extend({selector:'.post_link',events:{'click':'_onClickPost',},_onClickPost:function(ev){ev.preventDefault();const url=this.el.dataset.post||this.el.href;let data={};for(let[key,value]of Object.entries(this.el.dataset)){if(key.startsWith('post_')){data[key.slice(5)]=value;}};wUtils.sendRequest(url,data);},});});;
/* /website/static/src/js/user_custom_javascript.js defined in bundle 'web.assets_frontend_lazy' */
;
/* /website/static/src/snippets/s_share/000.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('website.s_share',function(require){'use strict';const publicWidget=require('web.public.widget');const ShareWidget=publicWidget.Widget.extend({selector:'.s_share, .oe_share',start:function(){var urlRegex=/(\?(?:|.*&)(?:u|url|body)=)(.*?)(&|#|$)/;var titleRegex=/(\?(?:|.*&)(?:title|text|subject)=)(.*?)(&|#|$)/;var url=encodeURIComponent(window.location.href);var title=encodeURIComponent($('title').text());this.$('a').each(function(){var $a=$(this);$a.attr('href',function(i,href){return href.replace(urlRegex,function(match,a,b,c){return a+url+c;}).replace(titleRegex,function(match,a,b,c){if($a.hasClass('s_share_whatsapp')){return a+title+url+c;}
return a+title+c;});});if($a.attr('target')&&$a.attr('target').match(/_blank/i)&&!$a.closest('.o_editable').length){$a.on('click',function(){window.open(this.href,'','menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=550,width=600');return false;});}});return this._super.apply(this,arguments);},});publicWidget.registry.share=ShareWidget;return ShareWidget;});;
/* /website/static/src/snippets/s_facebook_page/000.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('website.s_facebook_page',function(require){'use strict';var publicWidget=require('web.public.widget');var utils=require('web.utils');const FacebookPageWidget=publicWidget.Widget.extend({selector:'.o_facebook_page',disabledInEditableMode:false,start:function(){var def=this._super.apply(this,arguments);var params=_.pick(this.$el.data(),'href','height','tabs','small_header','hide_cover','show_facepile');if(!params.href){return def;}
params.width=utils.confine(Math.floor(this.$el.width()),180,500);var src=$.param.querystring('https://www.facebook.com/plugins/page.php',params);this.$iframe=$('',{src:src,class:'o_temp_auto_element',width:params.width,height:params.height,css:{border:'none',overflow:'hidden',},scrolling:'no',frameborder:'0',allowTransparency:'true',});this.$el.append(this.$iframe);return def;},destroy:function(){this._super.apply(this,arguments);if(this.$iframe){this.$iframe.remove();}},});publicWidget.registry.facebookPage=FacebookPageWidget;return FacebookPageWidget;});;
/* /website/static/src/snippets/s_image_gallery/000.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('website.s_image_gallery',function(require){'use strict';var core=require('web.core');var publicWidget=require('web.public.widget');var qweb=core.qweb;const GalleryWidget=publicWidget.Widget.extend({selector:'.s_image_gallery:not(.o_slideshow)',xmlDependencies:['/website/static/src/snippets/s_image_gallery/000.xml'],events:{'click img':'_onClickImg',},_onClickImg:function(ev){var self=this;var $cur=$(ev.currentTarget);var $images=$cur.closest('.s_image_gallery').find('img');var size=0.8;var dimensions={min_width:Math.round(window.innerWidth*size*0.9),min_height:Math.round(window.innerHeight*size),max_width:Math.round(window.innerWidth*size*0.9),max_height:Math.round(window.innerHeight*size),width:Math.round(window.innerWidth*size*0.9),height:Math.round(window.innerHeight*size)};var $img=($cur.is('img')===true)?$cur:$cur.closest('img');const milliseconds=$cur.closest('.s_image_gallery').data('interval')||false;var $modal=$(qweb.render('website.gallery.slideshow.lightbox',{images:$images.get(),index:$images.index($img),dim:dimensions,interval:milliseconds||0,id:_.uniqueId('slideshow_'),}));$modal.modal({keyboard:true,backdrop:true,});$modal.on('hidden.bs.modal',function(){$(this).hide();$(this).siblings().filter('.modal-backdrop').remove();$(this).remove();});$modal.find('.modal-content, .modal-body.o_slideshow').css('height','100%');$modal.appendTo(document.body);$modal.one('shown.bs.modal',function(){self.trigger_up('widgets_start_request',{editableMode:false,$target:$modal.find('.modal-body.o_slideshow'),});});},});const GallerySliderWidget=publicWidget.Widget.extend({selector:'.o_slideshow',xmlDependencies:['/website/static/src/snippets/s_image_gallery/000.xml'],disabledInEditableMode:false,start:function(){var self=this;this.$carousel=this.$target.is('.carousel')?this.$target:this.$target.find('.carousel');this.$indicator=this.$carousel.find('.carousel-indicators');this.$prev=this.$indicator.find('li.o_indicators_left').css('visibility','');this.$next=this.$indicator.find('li.o_indicators_right').css('visibility','');var $lis=this.$indicator.find('li[data-slide-to]');let indicatorWidth=this.$indicator.width();if(indicatorWidth===0){const $indicatorParent=this.$indicator.parents().not(':visible').last();if(!$indicatorParent[0].style.display){$indicatorParent[0].style.display='block';indicatorWidth=this.$indicator.width();$indicatorParent[0].style.display='';}}
let nbPerPage=Math.floor(indicatorWidth/$lis.first().outerWidth(true))-3;var realNbPerPage=nbPerPage||1;var nbPages=Math.ceil($lis.length/realNbPerPage);var index;var page;update();function hide(){$lis.each(function(i){$(this).toggleClass('d-none',i=(page+1)*nbPerPage);});if(page<=0){self.$prev.detach();}else{self.$prev.removeClass('d-none');self.$prev.prependTo(self.$indicator);}
if(page>=nbPages-1){self.$next.detach();}else{self.$next.removeClass('d-none');self.$next.appendTo(self.$indicator);}}
function update(){const active=$lis.filter('.active');index=active.length?$lis.index(active):0;page=Math.floor(index/realNbPerPage);hide();}
this.$carousel.on('slide.bs.carousel.gallery_slider',function(){setTimeout(function(){var $item=self.$carousel.find('.carousel-inner .carousel-item-prev, .carousel-inner .carousel-item-next');var index=$item.index();$lis.removeClass('active').filter('[data-slide-to="'+index+'"]').addClass('active');},0);});this.$indicator.on('click.gallery_slider','> li:not([data-slide-to])',function(){page+=($(this).hasClass('o_indicators_left')?-1:1);page=Math.max(0,Math.min(nbPages-1,page));self.$carousel.carousel(page*realNbPerPage);if(!self.editableMode){hide();}});this.$carousel.on('slid.bs.carousel.gallery_slider',update);return this._super.apply(this,arguments);},destroy:function(){this._super.apply(this,arguments);if(!this.$indicator){return;}
this.$prev.prependTo(this.$indicator);this.$next.appendTo(this.$indicator);this.$carousel.off('.gallery_slider');this.$indicator.off('.gallery_slider');},});publicWidget.registry.gallery=GalleryWidget;publicWidget.registry.gallerySlider=GallerySliderWidget;return{GalleryWidget:GalleryWidget,GallerySliderWidget:GallerySliderWidget,};});;
/* /website/static/src/snippets/s_countdown/000.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('website.s_countdown',function(require){'use strict';const{ColorpickerWidget}=require('web.Colorpicker');const core=require('web.core');const publicWidget=require('web.public.widget');const weUtils=require('web_editor.utils');const qweb=core.qweb;const _t=core._t;const CountdownWidget=publicWidget.Widget.extend({selector:'.s_countdown',xmlDependencies:['/website/static/src/snippets/s_countdown/000.xml'],disabledInEditableMode:false,defaultColor:'rgba(0, 0, 0, 255)',start:function(){this.$wrapper=this.$('.s_countdown_canvas_wrapper');this.hereBeforeTimerEnds=false;this.endAction=this.el.dataset.endAction;this.endTime=parseInt(this.el.dataset.endTime);this.size=parseInt(this.el.dataset.size);this.display=this.el.dataset.display;this.layout=this.el.dataset.layout;this.layoutBackground=this.el.dataset.layoutBackground;this.progressBarStyle=this.el.dataset.progressBarStyle;this.progressBarWeight=this.el.dataset.progressBarWeight;this.textColor=this._ensureCssColor(this.el.dataset.textColor);this.layoutBackgroundColor=this._ensureCssColor(this.el.dataset.layoutBackgroundColor);this.progressBarColor=this._ensureCssColor(this.el.dataset.progressBarColor);this.onlyOneUnit=this.display==='d';this.width=parseInt(this.size);if(this.layout==='boxes'){this.width/=1.75;}
this._initTimeDiff();this._render();this.setInterval=setInterval(this._render.bind(this),1000);return this._super(...arguments);},destroy:function(){this.$('.s_countdown_end_redirect_message').remove();this.$('canvas').remove();this.$('.s_countdown_end_message').addClass('d-none');this.$('.s_countdown_text_wrapper').remove();this.$('.s_countdown_canvas_wrapper').removeClass('d-none');clearInterval(this.setInterval);this._super(...arguments);},_ensureCssColor:function(color){if(ColorpickerWidget.isCSSColor(color)){return color;}
return weUtils.getCSSVariableValue(color)||this.defaultColor;},_getDelta:function(){const currentTimestamp=Date.now()/1000;return this.endTime-currentTimestamp;},_handleEndCountdownAction:function(){if(this.endAction==='redirect'){const redirectUrl=this.el.dataset.redirectUrl||'/';if(this.hereBeforeTimerEnds){setTimeout(()=>window.location=redirectUrl,500);}else{if(!this.$('.s_countdown_end_redirect_message').length){const $container=this.$('> .container, > .container-fluid, > .o_container_small');$container.append($(qweb.render('website.s_countdown.end_redirect_message',{redirectUrl:redirectUrl,})));}}}else if(this.endAction==='message'){this.$('.s_countdown_end_message').removeClass('d-none');}},_initTimeDiff:function(){const delta=this._getDelta();this.diff=[];if(this._isUnitVisible('d')&&!(this.onlyOneUnit&&delta<86400)){this.diff.push({canvas:$('',{class:'o_temp_auto_element'}).appendTo(this.$wrapper)[0],total:15,label:_t("Days"),nbSeconds:86400,});}
if(this._isUnitVisible('h')||(this.onlyOneUnit&&delta<86400&&delta>3600)){this.diff.push({canvas:$('',{class:'o_temp_auto_element'}).appendTo(this.$wrapper)[0],total:24,label:_t("Hours"),nbSeconds:3600,});}
if(this._isUnitVisible('m')||(this.onlyOneUnit&&delta<3600&&delta>60)){this.diff.push({canvas:$('',{class:'o_temp_auto_element'}).appendTo(this.$wrapper)[0],total:60,label:_t("Minutes"),nbSeconds:60,});}
if(this._isUnitVisible('s')||(this.onlyOneUnit&&delta<60)){this.diff.push({canvas:$('',{class:'o_temp_auto_element'}).appendTo(this.$wrapper)[0],total:60,label:_t("Seconds"),nbSeconds:1,});}},_isUnitVisible:function(unit){return this.display.includes(unit);},_render:function(){if(this.onlyOneUnit&&this._getDelta()').attr({class:'s_countdown_text_wrapper d-none',});this.$textWrapper.text(_t("Countdown ends in"));this.$textWrapper.append($('').attr({class:'s_countdown_text ml-1',}));this.$textWrapper.appendTo(this.$wrapper);}
this.$textWrapper.toggleClass('d-none',hideCountdown);const countdownText=this.diff.map(e=>e.nb+' '+e.label).join(', ');this.$('.s_countdown_text').text(countdownText.toLowerCase());}else{for(const val of this.diff){const canvas=val.canvas;const ctx=canvas.getContext("2d");ctx.canvas.width=this.width;ctx.canvas.height=this.size;this._clearCanvas(ctx);$(canvas).toggleClass('d-none',hideCountdown);if(hideCountdown){continue;}
if(this.layoutBackground!=='none'){this._drawBgShape(ctx,this.layoutBackground==='plain');}
this._drawText(canvas,val.nb,val.label,this.layoutBackground==='plain');if(this.progressBarStyle==='surrounded'){this._drawProgressBarBg(ctx,this.progressBarWeight==='thin');}
if(this.progressBarStyle!=='none'){this._drawProgressBar(ctx,val.nb,val.total,this.progressBarWeight==='thin');}
$(canvas).toggleClass('mx-2',this.layout==='boxes');}}
if(this.isFinished){clearInterval(this.setInterval);if(!this.editableMode){this._handleEndCountdownAction();}}},_updateTimeDiff:function(){let delta=this._getDelta();this.isFinished=delta<0;if(this.isFinished){for(const unitData of this.diff){unitData.nb=0;}
return;}
this.hereBeforeTimerEnds=true;for(const unitData of this.diff){unitData.nb=Math.floor(delta/unitData.nbSeconds);delta-=unitData.nb*unitData.nbSeconds;}},_clearCanvas:function(ctx){ctx.clearRect(0,0,this.size,this.size);},_drawText:function(canvas,textNb,textUnit,full=false){const ctx=canvas.getContext("2d");const nbSize=this.size/4;ctx.font=`${nbSize}px Arial`;ctx.fillStyle=this.textColor;ctx.textAlign='center';ctx.textBaseline='middle';ctx.fillText(textNb,canvas.width/2,canvas.height/2);const unitSize=this.size/12;ctx.font=`${unitSize}px Arial`;ctx.fillText(textUnit,canvas.width/2,canvas.height/2+nbSize/1.5,this.width);if(this.layout==='boxes'&&this.layoutBackground!=='none'&&this.progressBarStyle==='none'){let barWidth=this.size/(this.progressBarWeight==='thin'?31:10);if(full){barWidth=0;}
ctx.beginPath();ctx.moveTo(barWidth,this.size/2);ctx.lineTo(this.width-barWidth,this.size/2);ctx.stroke();}},_drawBgShape:function(ctx,full=false){ctx.fillStyle=this.layoutBackgroundColor;ctx.beginPath();if(this.layout==='circle'){let rayon=this.size/2;if(this.progressBarWeight==='thin'){rayon-=full?this.size/29:this.size/15;}else{rayon-=full?0:this.size/10;}
ctx.arc(this.size/2,this.size/2,rayon,0,Math.PI*2);ctx.fill();}else if(this.layout==='boxes'){let barWidth=this.size/(this.progressBarWeight==='thin'?31:10);if(full){barWidth=0;}
ctx.fillStyle=this.layoutBackgroundColor;ctx.rect(barWidth,barWidth,this.width-barWidth*2,this.size-barWidth*2);ctx.fill();const gradient=ctx.createLinearGradient(0,this.width,0,0);gradient.addColorStop(0,'#ffffff24');gradient.addColorStop(1,this.layoutBackgroundColor);ctx.fillStyle=gradient;ctx.rect(barWidth,barWidth,this.width-barWidth*2,this.size-barWidth*2);ctx.fill();$(ctx.canvas).css({'border-radius':'8px'});}},_drawProgressBar:function(ctx,nbUnit,totalUnit,thinLine){ctx.strokeStyle=this.progressBarColor;ctx.lineWidth=thinLine?this.size/35:this.size/10;if(this.layout==='circle'){ctx.beginPath();ctx.arc(this.size/2,this.size/2,this.size/2-this.size/20,Math.PI/-2,(Math.PI*2)*(nbUnit/totalUnit)+(Math.PI/-2));ctx.stroke();}else if(this.layout==='boxes'){ctx.lineWidth*=2;let pc=nbUnit/totalUnit*100;const linesCoordFuncs=[(linePc)=>[0+ctx.lineWidth/2,0,(this.width-ctx.lineWidth/2)*linePc/25+ctx.lineWidth/2,0],(linePc)=>[this.width,0+ctx.lineWidth/2,this.width,(this.size-ctx.lineWidth/2)*linePc/25+ctx.lineWidth/2],(linePc)=>[this.width-((this.width-ctx.lineWidth/2)*linePc/25)-ctx.lineWidth/2,this.size,this.width-ctx.lineWidth/2,this.size],(linePc)=>[0,this.size-((this.size-ctx.lineWidth/2)*linePc/25)-ctx.lineWidth/2,0,this.size-ctx.lineWidth/2],];while(pc>0&&linesCoordFuncs.length){const linePc=Math.min(pc,25);const lineCoord=(linesCoordFuncs.shift())(linePc);ctx.beginPath();ctx.moveTo(lineCoord[0],lineCoord[1]);ctx.lineTo(lineCoord[2],lineCoord[3]);ctx.stroke();pc-=linePc;}}},_drawProgressBarBg:function(ctx,thinLine){ctx.strokeStyle=this.progressBarColor;ctx.globalAlpha=0.2;ctx.lineWidth=thinLine?this.size/35:this.size/10;if(this.layout==='circle'){ctx.beginPath();ctx.arc(this.size/2,this.size/2,this.size/2-this.size/20,0,Math.PI*2);ctx.stroke();}else if(this.layout==='boxes'){ctx.lineWidth*=2;const points=[[0+ctx.lineWidth/2,0,this.width,0],[this.width,0+ctx.lineWidth/2,this.width,this.size],[0,this.size,this.width-ctx.lineWidth/2,this.size],[0,0,0,this.size-ctx.lineWidth/2],];while(points.length){const point=points.shift();ctx.beginPath();ctx.moveTo(point[0],point[1]);ctx.lineTo(point[2],point[3]);ctx.stroke();}}
ctx.globalAlpha=1;},});publicWidget.registry.countdown=CountdownWidget;return CountdownWidget;});;
/* /website/static/src/snippets/s_popup/000.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('website.s_popup',function(require){'use strict';const config=require('web.config');const publicWidget=require('web.public.widget');const utils=require('web.utils');const PopupWidget=publicWidget.Widget.extend({selector:'.s_popup',events:{'click .js_close_popup':'_onCloseClick','hide.bs.modal':'_onHideModal',},start:function(){this._popupAlreadyShown=!!utils.get_cookie(this.$el.attr('id'));if(!this._popupAlreadyShown){this._bindPopup();}
return this._super(...arguments);},destroy:function(){this._super.apply(this,arguments);$(document).off('mouseleave.open_popup');this.$target.find('.modal').modal('hide');clearTimeout(this.timeout);},_bindPopup:function(){const $main=this.$target.find('.modal');let display=$main.data('display');let delay=$main.data('showAfter');if(config.device.isMobile){if(display==='mouseExit'){display='afterDelay';delay=5000;}
this.$('.modal').removeClass('s_popup_middle').addClass('s_popup_bottom');}
if(display==='afterDelay'){this.timeout=setTimeout(()=>this._showPopup(),delay);}else{$(document).on('mouseleave.open_popup',()=>this._showPopup());}},_hidePopup:function(){this.$target.find('.modal').modal('hide');},_showPopup:function(){if(this._popupAlreadyShown){return;}
this.$target.find('.modal').modal('show');},_onCloseClick:function(){this._hidePopup();},_onHideModal:function(){const nbDays=this.$el.find('.modal').data('consentsDuration');utils.set_cookie(this.$el.attr('id'),true,nbDays*24*60*60);this._popupAlreadyShown=true;},});publicWidget.registry.popup=PopupWidget;const _baseSetScrollbar=$.fn.modal.Constructor.prototype._setScrollbar;$.fn.modal.Constructor.prototype._setScrollbar=function(){if(this._element.classList.contains('s_popup_no_backdrop')){return;}
return _baseSetScrollbar.apply(this,...arguments);};const _baseGetScrollbarWidth=$.fn.modal.Constructor.prototype._getScrollbarWidth;$.fn.modal.Constructor.prototype._getScrollbarWidth=function(){if(this._element.classList.contains('s_popup_no_backdrop')){return 0;}
return _baseGetScrollbarWidth.apply(this,...arguments);};return PopupWidget;});;
/* /website/static/src/snippets/s_table_of_content/000.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('website.s_table_of_content',function(require){'use strict';const publicWidget=require('web.public.widget');const{extraMenuUpdateCallbacks}=require('website.content.menu');const TableOfContent=publicWidget.Widget.extend({selector:'section .s_table_of_content_navbar_sticky',disabledInEditableMode:false,async start(){await this._super(...arguments);this._updateTableOfContentNavbarPosition();extraMenuUpdateCallbacks.push(this._updateTableOfContentNavbarPosition.bind(this));},destroy(){this.$target.css('top','');this.$target.find('.s_table_of_content_navbar').css('top','');this._super(...arguments);},_updateTableOfContentNavbarPosition(){let position=0;const $fixedElements=$('.o_top_fixed_element');_.each($fixedElements,el=>position+=$(el).outerHeight());const isHorizontalNavbar=this.$target.hasClass('s_table_of_content_horizontal_navbar');this.$target.css('top',isHorizontalNavbar?position:'');this.$target.find('.s_table_of_content_navbar').css('top',isHorizontalNavbar?'':position+20);const $mainNavBar=$('#oe_main_menu_navbar');position+=$mainNavBar.length?$mainNavBar.outerHeight():0;position+=isHorizontalNavbar?this.$target.outerHeight():0;$().getScrollingElement().scrollspy({target:'.s_table_of_content_navbar',method:'offset',offset:position+100,alwaysKeepFirstActive:true});},});publicWidget.registry.anchorSlide.include({_computeExtraOffset(){let extraOffset=this._super(...arguments);if(this.$el.hasClass('table_of_content_link')){const tableOfContentNavbarEl=this.$el.closest('.s_table_of_content_navbar_sticky.s_table_of_content_horizontal_navbar');if(tableOfContentNavbarEl.length>0){extraOffset+=$(tableOfContentNavbarEl).outerHeight();}}
return extraOffset;},});publicWidget.registry.snippetTableOfContent=TableOfContent;return TableOfContent;});;
/* /website/static/src/snippets/s_chart/000.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('website.s_chart',function(require){'use strict';const publicWidget=require('web.public.widget');const weUtils=require('web_editor.utils');const ChartWidget=publicWidget.Widget.extend({selector:'.s_chart',disabledInEditableMode:false,jsLibs:['/web/static/lib/Chart/Chart.js',],init:function(parent,options){this._super.apply(this,arguments);this.style=window.getComputedStyle(document.documentElement);},start:function(){const data=JSON.parse(this.el.dataset.data);data.datasets.forEach(el=>{if(Array.isArray(el.backgroundColor)){el.backgroundColor=el.backgroundColor.map(el=>this._convertToCssColor(el));el.borderColor=el.borderColor.map(el=>this._convertToCssColor(el));}else{el.backgroundColor=this._convertToCssColor(el.backgroundColor);el.borderColor=this._convertToCssColor(el.borderColor);}
el.borderWidth=this.el.dataset.borderWidth;});const chartData={type:this.el.dataset.type,data:data,options:{legend:{display:this.el.dataset.legendPosition!=='none',position:this.el.dataset.legendPosition,},tooltips:{enabled:this.el.dataset.tooltipDisplay==='true',},title:{display:!!this.el.dataset.title,text:this.el.dataset.title,},},};if(this.el.dataset.type==='radar'){chartData.options.scale={ticks:{beginAtZero:true,}};}else if(['pie','doughnut'].includes(this.el.dataset.type)){chartData.options.tooltips.callbacks={label:(tooltipItem,data)=>{const label=data.datasets[tooltipItem.datasetIndex].label;const secondLabel=data.labels[tooltipItem.index];let final=label;if(label){if(secondLabel){final=label+' - '+secondLabel;}}else if(secondLabel){final=secondLabel;}
return final+':'+data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];},};}else{chartData.options.scales={xAxes:[{stacked:this.el.dataset.stacked==='true',ticks:{beginAtZero:true},}],yAxes:[{stacked:this.el.dataset.stacked==='true',ticks:{beginAtZero:true},}],};}
if(this.editableMode){chartData.options.animation={duration:0,};}
const canvas=this.el.querySelector('canvas');this.chart=new window.Chart(canvas,chartData);return this._super.apply(this,arguments);},destroy:function(){if(this.chart){this.chart.destroy();this.el.querySelectorAll('.chartjs-size-monitor').forEach(el=>el.remove());}
this._super.apply(this,arguments);},_convertToCssColor:function(color){if(!color){return'transparent';}
return weUtils.getCSSVariableValue(color,this.style)||color;},});publicWidget.registry.chart=ChartWidget;return ChartWidget;});;
/* /website/static/src/snippets/s_google_map/000.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('website.s_google_map',function(require){'use strict';const publicWidget=require('web.public.widget');publicWidget.registry.GoogleMap=publicWidget.Widget.extend({selector:'.s_google_map',disabledInEditableMode:false,mapColors:{lightMonoMap:[{"featureType":"administrative.locality","elementType":"all","stylers":[{"hue":"#2c2e33"},{"saturation":7},{"lightness":19},{"visibility":"on"}]},{"featureType":"landscape","elementType":"all","stylers":[{"hue":"#ffffff"},{"saturation":-100},{"lightness":100},{"visibility":"simplified"}]},{"featureType":"poi","elementType":"all","stylers":[{"hue":"#ffffff"},{"saturation":-100},{"lightness":100},{"visibility":"off"}]},{"featureType":"road","elementType":"geometry","stylers":[{"hue":"#bbc0c4"},{"saturation":-93},{"lightness":31},{"visibility":"simplified"}]},{"featureType":"road","elementType":"labels","stylers":[{"hue":"#bbc0c4"},{"saturation":-93},{"lightness":31},{"visibility":"on"}]},{"featureType":"road.arterial","elementType":"labels","stylers":[{"hue":"#bbc0c4"},{"saturation":-93},{"lightness":-2},{"visibility":"simplified"}]},{"featureType":"road.local","elementType":"geometry","stylers":[{"hue":"#e9ebed"},{"saturation":-90},{"lightness":-8},{"visibility":"simplified"}]},{"featureType":"transit","elementType":"all","stylers":[{"hue":"#e9ebed"},{"saturation":10},{"lightness":69},{"visibility":"on"}]},{"featureType":"water","elementType":"all","stylers":[{"hue":"#e9ebed"},{"saturation":-78},{"lightness":67},{"visibility":"simplified"}]}],lillaMap:[{elementType:"labels",stylers:[{saturation:-20}]},{featureType:"poi",elementType:"labels",stylers:[{visibility:"off"}]},{featureType:'road.highway',elementType:'labels',stylers:[{visibility:"off"}]},{featureType:"road.local",elementType:"labels.icon",stylers:[{visibility:"off"}]},{featureType:"road.arterial",elementType:"labels.icon",stylers:[{visibility:"off"}]},{featureType:"road",elementType:"geometry.stroke",stylers:[{visibility:"off"}]},{featureType:"transit",elementType:"geometry.fill",stylers:[{hue:'#2d313f'},{visibility:"on"},{lightness:5},{saturation:-20}]},{featureType:"poi",elementType:"geometry.fill",stylers:[{hue:'#2d313f'},{visibility:"on"},{lightness:5},{saturation:-20}]},{featureType:"poi.government",elementType:"geometry.fill",stylers:[{hue:'#2d313f'},{visibility:"on"},{lightness:5},{saturation:-20}]},{featureType:"poi.sport_complex",elementType:"geometry.fill",stylers:[{hue:'#2d313f'},{visibility:"on"},{lightness:5},{saturation:-20}]},{featureType:"poi.attraction",elementType:"geometry.fill",stylers:[{hue:'#2d313f'},{visibility:"on"},{lightness:5},{saturation:-20}]},{featureType:"poi.business",elementType:"geometry.fill",stylers:[{hue:'#2d313f'},{visibility:"on"},{lightness:5},{saturation:-20}]},{featureType:"transit",elementType:"geometry.fill",stylers:[{hue:'#2d313f'},{visibility:"on"},{lightness:5},{saturation:-20}]},{featureType:"transit.station",elementType:"geometry.fill",stylers:[{hue:'#2d313f'},{visibility:"on"},{lightness:5},{saturation:-20}]},{featureType:"landscape",stylers:[{hue:'#2d313f'},{visibility:"on"},{lightness:5},{saturation:-20}]},{featureType:"road",elementType:"geometry.fill",stylers:[{hue:'#2d313f'},{visibility:"on"},{lightness:5},{saturation:-20}]},{featureType:"road.highway",elementType:"geometry.fill",stylers:[{hue:'#2d313f'},{visibility:"on"},{lightness:5},{saturation:-20}]},{featureType:"water",elementType:"geometry",stylers:[{hue:'#2d313f'},{visibility:"on"},{lightness:5},{saturation:-20}]}],blueMap:[{stylers:[{hue:"#00ffe6"},{saturation:-20}]},{featureType:"road",elementType:"geometry",stylers:[{lightness:100},{visibility:"simplified"}]},{featureType:"road",elementType:"labels",stylers:[{visibility:"off"}]}],retroMap:[{"featureType":"administrative","elementType":"all","stylers":[{"visibility":"on"},{"lightness":33}]},{"featureType":"landscape","elementType":"all","stylers":[{"color":"#f2e5d4"}]},{"featureType":"poi.park","elementType":"geometry","stylers":[{"color":"#c5dac6"}]},{"featureType":"poi.park","elementType":"labels","stylers":[{"visibility":"on"},{"lightness":20}]},{"featureType":"road","elementType":"all","stylers":[{"lightness":20}]},{"featureType":"road.highway","elementType":"geometry","stylers":[{"color":"#c5c6c6"}]},{"featureType":"road.arterial","elementType":"geometry","stylers":[{"color":"#e4d7c6"}]},{"featureType":"road.local","elementType":"geometry","stylers":[{"color":"#fbfaf7"}]},{"featureType":"water","elementType":"all","stylers":[{"visibility":"on"},{"color":"#acbcc9"}]}],flatMap:[{"stylers":[{"visibility":"off"}]},{"featureType":"road","stylers":[{"visibility":"on"},{"color":"#ffffff"}]},{"featureType":"road.arterial","stylers":[{"visibility":"on"},{"color":"#fee379"}]},{"featureType":"road.highway","stylers":[{"visibility":"on"},{"color":"#fee379"}]},{"featureType":"landscape","stylers":[{"visibility":"on"},{"color":"#f3f4f4"}]},{"featureType":"water","stylers":[{"visibility":"on"},{"color":"#7fc8ed"}]},{},{"featureType":"road","elementType":"labels","stylers":[{"visibility":"on"}]},{"featureType":"poi.park","elementType":"geometry.fill","stylers":[{"visibility":"on"},{"color":"#83cead"}]},{"elementType":"labels","stylers":[{"visibility":"on"}]},{"featureType":"landscape.man_made","elementType":"geometry","stylers":[{"weight":0.9},{"visibility":"off"}]}],cobaltMap:[{"featureType":"all","elementType":"all","stylers":[{"invert_lightness":true},{"saturation":10},{"lightness":30},{"gamma":0.5},{"hue":"#435158"}]}],cupertinoMap:[{"featureType":"water","elementType":"geometry","stylers":[{"color":"#a2daf2"}]},{"featureType":"landscape.man_made","elementType":"geometry","stylers":[{"color":"#f7f1df"}]},{"featureType":"landscape.natural","elementType":"geometry","stylers":[{"color":"#d0e3b4"}]},{"featureType":"landscape.natural.terrain","elementType":"geometry","stylers":[{"visibility":"off"}]},{"featureType":"poi.park","elementType":"geometry","stylers":[{"color":"#bde6ab"}]},{"featureType":"poi","elementType":"labels","stylers":[{"visibility":"off"}]},{"featureType":"poi.medical","elementType":"geometry","stylers":[{"color":"#fbd3da"}]},{"featureType":"poi.business","stylers":[{"visibility":"off"}]},{"featureType":"road","elementType":"geometry.stroke","stylers":[{"visibility":"off"}]},{"featureType":"road","elementType":"labels","stylers":[{"visibility":"off"}]},{"featureType":"road.highway","elementType":"geometry.fill","stylers":[{"color":"#ffe15f"}]},{"featureType":"road.highway","elementType":"geometry.stroke","stylers":[{"color":"#efd151"}]},{"featureType":"road.arterial","elementType":"geometry.fill","stylers":[{"color":"#ffffff"}]},{"featureType":"road.local","elementType":"geometry.fill","stylers":[{"color":"black"}]},{"featureType":"transit.station.airport","elementType":"geometry.fill","stylers":[{"color":"#cfb2db"}]}],carMap:[{"featureType":"administrative","stylers":[{"visibility":"off"}]},{"featureType":"poi","stylers":[{"visibility":"simplified"}]},{"featureType":"road","stylers":[{"visibility":"simplified"}]},{"featureType":"water","stylers":[{"visibility":"simplified"}]},{"featureType":"transit","stylers":[{"visibility":"simplified"}]},{"featureType":"landscape","stylers":[{"visibility":"simplified"}]},{"featureType":"road.highway","stylers":[{"visibility":"off"}]},{"featureType":"road.local","stylers":[{"visibility":"on"}]},{"featureType":"road.highway","elementType":"geometry","stylers":[{"visibility":"on"}]},{"featureType":"water","stylers":[{"color":"#84afa3"},{"lightness":52}]},{"stylers":[{"saturation":-77}]},{"featureType":"road"}],bwMap:[{stylers:[{hue:"#00ffe6"},{saturation:-100}]},{featureType:"road",elementType:"geometry",stylers:[{lightness:100},{visibility:"simplified"}]},{featureType:"road",elementType:"labels",stylers:[{visibility:"off"}]}],},async start(){await this._super(...arguments);if(typeof google!=='object'||typeof google.maps!=='object'){await new Promise(resolve=>{this.trigger_up('gmap_api_request',{editableMode:this.editableMode,onSuccess:()=>resolve(),});});return;}
const std=[];new google.maps.StyledMapType(std,{name:"Std Map"});const myOptions={zoom:12,center:new google.maps.LatLng(50.854975,4.3753899),mapTypeId:google.maps.MapTypeId.ROADMAP,panControl:false,zoomControl:false,mapTypeControl:false,streetViewControl:false,scrollwheel:false,mapTypeControlOptions:{mapTypeIds:[google.maps.MapTypeId.ROADMAP,'map_style']}};const mapC=this.$('.map_container');const map=new google.maps.Map(mapC.get(0),myOptions);const p=this.el.dataset.mapGps.substring(1).slice(0,-1).split(',');const gps=new google.maps.LatLng(p[0],p[1]);map.setCenter(gps);google.maps.event.addDomListener(window,'resize',()=>{map.setCenter(gps);});const markerOptions={map:map,animation:google.maps.Animation.DROP,position:new google.maps.LatLng(p[0],p[1])};if(this.el.dataset.pinStyle==='flat'){markerOptions.icon='/website/static/src/img/snippets_thumbs/s_google_map_marker.png';}
new google.maps.Marker(markerOptions);map.setMapTypeId(google.maps.MapTypeId[this.el.dataset.mapType]);map.setZoom(parseInt(this.el.dataset.mapZoom));const mapColorAttr=this.el.dataset.mapColor;if(mapColorAttr){const mapColor=this.mapColors[mapColorAttr];map.mapTypes.set('map_style',new google.maps.StyledMapType(mapColor,{name:"Styled Map"}));map.setMapTypeId('map_style');}},});});;
/* /website/static/src/snippets/s_dynamic_snippet/000.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('website.s_dynamic_snippet',function(require){'use strict';const core=require('web.core');const config=require('web.config');const publicWidget=require('web.public.widget');const DynamicSnippet=publicWidget.Widget.extend({selector:'.s_dynamic_snippet',xmlDependencies:['/website/static/src/snippets/s_dynamic_snippet/000.xml'],read_events:{'click [data-url]':'_onCallToAction',},disabledInEditableMode:false,init:function(){this._super.apply(this,arguments);this.data=[];this.renderedContent='';this.isDesplayedAsMobile=config.device.isMobile;this.uniqueId=_.uniqueId('s_dynamic_snippet_');this.template_key='website.s_dynamic_snippet.grid';},willStart:function(){return this._super.apply(this,arguments).then(()=>Promise.all([this._fetchData(),this._manageWarningMessageVisibility()]));},start:function(){return this._super.apply(this,arguments).then(()=>{this._setupSizeChangedManagement(true);this._render();this._toggleVisibility(true);});},destroy:function(){this._toggleVisibility(false);this._setupSizeChangedManagement(false);this._clearContent();this._super.apply(this,arguments);},_clearContent:function(){const $dynamicSnippetTemplate=this.$el.find('.dynamic_snippet_template');if($dynamicSnippetTemplate){$dynamicSnippetTemplate.html('');}},_isConfigComplete:function(){return this.$el.get(0).dataset.filterId!==undefined&&this.$el.get(0).dataset.templateKey!==undefined;},_getSearchDomain:function(){return[];},_fetchData:function(){if(this._isConfigComplete()){return this._rpc({'route':'/website/snippet/filters','params':{'filter_id':parseInt(this.$el.get(0).dataset.filterId),'template_key':this.$el.get(0).dataset.templateKey,'limit':parseInt(this.$el.get(0).dataset.numberOfRecords),'search_domain':this._getSearchDomain()},}).then((data)=>{this.data=data;});}else{return new Promise((resolve)=>{this.data=[];resolve();});}},_mustMessageWarningBeHidden:function(){return this._isConfigComplete()||!this.editableMode;},_manageWarningMessageVisibility:async function(){this.$el.find('.missing_option_warning').toggleClass('d-none',this._mustMessageWarningBeHidden());},_prepareContent:function(){if(this.$target[0].dataset.numberOfElements&&this.$target[0].dataset.numberOfElementsSmallDevices){this.renderedContent=core.qweb.render(this.template_key,this._getQWebRenderOptions());}else{this.renderedContent='';}},_getQWebRenderOptions:function(){return{chunkSize:parseInt(config.device.isMobile?this.$target[0].dataset.numberOfElementsSmallDevices:this.$target[0].dataset.numberOfElements),data:this.data,uniqueId:this.uniqueId};},_render:function(){if(this.data.length){this._prepareContent();}else{this.renderedContent='';}
this._renderContent();},_renderContent:function(){this.$el.find('.dynamic_snippet_template').html(this.renderedContent);},_setupSizeChangedManagement:function(enable){if(enable===true){config.device.bus.on('size_changed',this,this._onSizeChanged);}else{config.device.bus.off('size_changed',this,this._onSizeChanged);}},_toggleVisibility:function(visible){this.$el.toggleClass('d-none',!visible);},_onCallToAction:function(ev){window.location=$(ev.currentTarget).attr('data-url');},_onSizeChanged:function(size){if(this.isDesplayedAsMobile!==config.device.isMobile){this.isDesplayedAsMobile=config.device.isMobile;this._render();}},});publicWidget.registry.dynamic_snippet=DynamicSnippet;return DynamicSnippet;});;
/* /website/static/src/snippets/s_dynamic_snippet_carousel/000.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('website.s_dynamic_snippet_carousel',function(require){'use strict';const config=require('web.config');const core=require('web.core');const publicWidget=require('web.public.widget');const DynamicSnippet=require('website.s_dynamic_snippet');const DynamicSnippetCarousel=DynamicSnippet.extend({selector:'.s_dynamic_snippet_carousel',xmlDependencies:(DynamicSnippet.prototype.xmlDependencies||[]).concat(['/website/static/src/snippets/s_dynamic_snippet_carousel/000.xml']),init:function(){this._super.apply(this,arguments);this.template_key='website.s_dynamic_snippet.carousel';},_getQWebRenderParams:function(){return Object.assign(this._super.apply(this,arguments),{interval:parseInt(this.$target[0].dataset.carouselInterval),},);},});publicWidget.registry.dynamic_snippet_carousel=DynamicSnippetCarousel;return DynamicSnippetCarousel;});;
/* /saas_website/static/src/js/db_activation_reminder.js defined in bundle 'web.assets_frontend_lazy' */
$(function(){if(typeof odoo==='undefined'){return;}
if(_.has(odoo.__DEBUG__.services,'website.root')){odoo.define('saas_website.db_activation_website',function(require){'use strict';var ExpirationTag=require('saas_trial.db_expiration_tag');var WebsiteRoot=require('website.root').WebsiteRoot;WebsiteRoot.include({xmlDependencies:(WebsiteRoot.prototype.xmlDependencies||[]).concat(['/saas_trial/static/xml/trial.xml']),start:function(){return this._super.apply(this,arguments).then(function(){var tag=new ExpirationTag(this);if(tag.visible){tag.prependTo($('.o_menu_systray'));}});},});});}});;
/* /website_enterprise/static/src/js/website_enterprise.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('website.home_menu',function(require){'use strict';var session=require('web.session');var websiteNavbarData=require('website.navbar');websiteNavbarData.WebsiteNavbar.include({events:_.extend({},websiteNavbarData.WebsiteNavbar.prototype.events||{},{'click .o_menu_toggle':'_onMenuToggleClick',}),_onMenuToggleClick:function(ev){ev.preventDefault();var $button=$(ev.currentTarget);if(!$button.hasClass('fa')){return;}
$button.removeClass('fa fa-th').append($('',{'class':'fa fa-spin fa-spinner'}));var url='/web#home';window.location.href=url;},});});;
/* /website_mail/static/src/js/follow.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('website_mail.follow',function(require){'use strict';var publicWidget=require('web.public.widget');publicWidget.registry.follow=publicWidget.Widget.extend({selector:'#wrapwrap:has(.js_follow)',disabledInEditableMode:false,start:function(){var self=this;this.isUser=false;var $jsFollowEls=this.$el.find('.js_follow');var always=function(data){self.isUser=data[0].is_user;const $jsFollowToEnable=$jsFollowEls.filter(function(){const model=this.dataset.object;return model in data[1]&&data[1][model].includes(parseInt(this.dataset.id));});self._toggleSubscription(true,data[0].email,$jsFollowToEnable);self._toggleSubscription(false,data[0].email,$jsFollowEls.not($jsFollowToEnable));$jsFollowEls.removeClass('d-none');};const records={};for(const el of $jsFollowEls){const model=el.dataset.object;if(!(model in records)){records[model]=[];}
records[model].push(parseInt(el.dataset.id));}
this._rpc({route:'/website_mail/is_follower',params:{records:records,},}).then(always).guardedCatch(always);if(!this.editableMode){$('.js_follow > .input-group-append.d-none').removeClass('d-none');this.$target.find('.js_follow_btn, .js_unfollow_btn').on('click',function(event){event.preventDefault();self._onClick(event);});}
return this._super.apply(this,arguments);},_toggleSubscription:function(follow,email,$jsFollowEls){if(follow){this._updateSubscriptionDOM(follow,email,$jsFollowEls);}else{for(const el of $jsFollowEls){const follow=!email&&el.getAttribute('data-unsubscribe');this._updateSubscriptionDOM(follow,email,$(el));}}},_updateSubscriptionDOM:function(follow,email,$jsFollowEls){$jsFollowEls.find('input.js_follow_email').val(email||"").attr("disabled",email&&(follow||this.isUser)?"disabled":false);$jsFollowEls.attr("data-follow",follow?'on':'off');},_onClick:function(ev){var self=this;var $jsFollow=$(ev.currentTarget).closest('.js_follow');var $email=$jsFollow.find(".js_follow_email");if($email.length&&!$email.val().match(/.+@.+/)){$jsFollow.addClass('o_has_error').find('.form-control, .custom-select').addClass('is-invalid');return false;}
$jsFollow.removeClass('o_has_error').find('.form-control, .custom-select').removeClass('is-invalid');var email=$email.length?$email.val():false;if(email||this.isUser){this._rpc({route:'/website_mail/follow',params:{'id':+$jsFollow.data('id'),'object':$jsFollow.data('object'),'message_is_follower':$jsFollow.attr("data-follow")||"off",'email':email,},}).then(function(follow){self._toggleSubscription(follow,email,$jsFollow);});}},});});;
/* /web_tour/static/src/js/public/tour_manager.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('web_tour.public.TourManager',function(require){'use strict';var TourManager=require('web_tour.TourManager');var lazyloader=require('web.public.lazyloader');TourManager.include({_waitBeforeTourStart:function(){return this._super.apply(this,arguments).then(function(){return lazyloader.allScriptsLoaded;}).then(function(){return new Promise(function(resolve){setTimeout(resolve);});});},});});;
/* /bus/static/src/js/longpolling_bus.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('bus.Longpolling',function(require){"use strict";var Bus=require('web.Bus');var ServicesMixin=require('web.ServicesMixin');var LongpollingBus=Bus.extend(ServicesMixin,{PARTNERS_PRESENCE_CHECK_PERIOD:30000,ERROR_RETRY_DELAY:10000,POLL_ROUTE:'/longpolling/poll',_isActive:null,_lastNotificationID:0,_isOdooFocused:true,_pollRetryTimeout:null,init:function(parent,params){this._super.apply(this,arguments);this._id=_.uniqueId('bus');this._longPollingBusId=this._id;this._options={};this._channels=[];this._lastPresenceTime=new Date().getTime();$(window).on("focus."+this._longPollingBusId,this._onFocusChange.bind(this,{focus:true}));$(window).on("blur."+this._longPollingBusId,this._onFocusChange.bind(this,{focus:false}));$(window).on("unload."+this._longPollingBusId,this._onFocusChange.bind(this,{focus:false}));$(window).on("click."+this._longPollingBusId,this._onPresence.bind(this));$(window).on("keydown."+this._longPollingBusId,this._onPresence.bind(this));$(window).on("keyup."+this._longPollingBusId,this._onPresence.bind(this));},destroy:function(){this.stopPolling();$(window).off("focus."+this._longPollingBusId);$(window).off("blur."+this._longPollingBusId);$(window).off("unload."+this._longPollingBusId);$(window).off("click."+this._longPollingBusId);$(window).off("keydown."+this._longPollingBusId);$(window).off("keyup."+this._longPollingBusId);this._super();},addChannel:function(channel){if(this._channels.indexOf(channel)===-1){this._channels.push(channel);if(this._pollRpc){this._pollRpc.abort();}else{this.startPolling();}}},deleteChannel:function(channel){var index=this._channels.indexOf(channel);if(index!==-1){this._channels.splice(index,1);if(this._pollRpc){this._pollRpc.abort();}}},isOdooFocused:function(){return this._isOdooFocused;},startPolling:function(){if(this._isActive===null){this._poll=this._poll.bind(this);}
if(!this._isActive){this._isActive=true;this._poll();}},stopPolling:function(){this._isActive=false;this._channels=[];clearTimeout(this._pollRetryTimeout);if(this._pollRpc){this._pollRpc.abort();}},updateOption:function(key,value){this._options[key]=value;},_getLastPresence:function(){return this._lastPresenceTime;},_poll:function(){var self=this;if(!this._isActive){return;}
var now=new Date().getTime();var options=_.extend({},this._options,{bus_inactivity:now-this._getLastPresence(),});var data={channels:this._channels,last:this._lastNotificationID,options:options};this._pollRpc=this._makePoll(data);this._pollRpc.then(function(result){self._pollRpc=false;self._onPoll(result);self._poll();}).guardedCatch(function(result){self._pollRpc=false;result.event.preventDefault();if(result.message==="XmlHttpRequestError abort"){self._poll();}else{self._pollRetryTimeout=setTimeout(self._poll,self.ERROR_RETRY_DELAY+(Math.floor((Math.random()*20)+1)*1000));}});},_makePoll:function(data){return this._rpc({route:this.POLL_ROUTE,params:data},{shadow:true,timeout:60000});},_onFocusChange:function(params){this._isOdooFocused=params.focus;if(params.focus){this._lastPresenceTime=new Date().getTime();this.trigger('window_focus',this._isOdooFocused);}},_onPoll:function(notifications){var self=this;var notifs=_.map(notifications,function(notif){if(notif.id>self._lastNotificationID){self._lastNotificationID=notif.id;}
return[notif.channel,notif.message];});this.trigger("notification",notifs);return notifs;},_onPresence:function(){this._lastPresenceTime=new Date().getTime();},});return LongpollingBus;});;
/* /bus/static/src/js/crosstab_bus.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('bus.CrossTab',function(require){"use strict";var Longpolling=require('bus.Longpolling');var session=require('web.session');var CrossTabBus=Longpolling.extend({TAB_HEARTBEAT_PERIOD:10000,MASTER_TAB_HEARTBEAT_PERIOD:1500,HEARTBEAT_OUT_OF_DATE_PERIOD:5000,HEARTBEAT_KILL_OLD_PERIOD:15000,LOCAL_STORAGE_PREFIX:'bus',_isMasterTab:false,_isRegistered:false,init:function(){this._super.apply(this,arguments);var now=new Date().getTime();this._sanitizedOrigin=session.origin.replace(/:\/{0,2}/g,'_');this._id=_.uniqueId(this.LOCAL_STORAGE_PREFIX)+':'+now;if(this._callLocalStorage('getItem','last_ts',0)+50000now){cleanedPeers[peerName]=peers[peerName];}}
if(heartbeatValue!==this.lastHeartbeat){this._isMasterTab=false;this.lastHeartbeat=0;peers[this._id]=now;this._callLocalStorage('setItem','peers',peers);this.stopPolling();this.trigger('no_longer_master');}else{this.lastHeartbeat=now;this._callLocalStorage('setItem','heartbeat',now);this._callLocalStorage('setItem','peers',cleanedPeers);}}else{peers[this._id]=now;this._callLocalStorage('setItem','peers',peers);}
var hbPeriod=this._isMasterTab?this.MASTER_TAB_HEARTBEAT_PERIOD:this.TAB_HEARTBEAT_PERIOD;if(this._lastPresenceTime+hbPeriod>now){this._callLocalStorage('setItem','lastPresence',this._lastPresenceTime);}
this._heartbeatTimeout=setTimeout(this._heartbeat.bind(this),hbPeriod);},_registerWindowUnload:function(){$(window).on('unload.'+this._id,this._onUnload.bind(this));},_startElection:function(){if(this._isMasterTab){return;}
var now=new Date().getTime();var peers=this._callLocalStorage('getItem','peers',{});var heartbeatKillOld=now-this.HEARTBEAT_KILL_OLD_PERIOD;var newMaster;for(var peerName in peers){if(peers[peerName]-1){this.do_notify(title,content);this._beep();}else{throw error;}}}}else{this.do_notify(title,content);if(this.isMasterTab()){this._beep();}}},onNotification:function(){this.on.apply(this,["notification"].concat(Array.prototype.slice.call(arguments)));},_beep:function(){if(typeof(Audio)!=="undefined"){if(!this._audio){this._audio=new Audio();var ext=this._audio.canPlayType("audio/ogg; codecs=vorbis")?".ogg":".mp3";this._audio.src=session.url("/mail/static/src/audio/ting"+ext);}
Promise.resolve(this._audio.play()).catch(_.noop);}},_sendNativeNotification:function(title,content,callback){var notification=new Notification(_.unescape(title),{body:_.unescape(content),icon:"/mail/static/src/img/odoobot_transparent.png"});notification.onclick=function(){window.focus();if(this.cancel){this.cancel();}else if(this.close){this.close();}
if(callback){callback();}};},});core.serviceRegistry.add('bus_service',BusService);return BusService;});;
/* /web_unsplash/static/src/js/unsplash_beacon.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('web_unsplash.beacon',function(require){'use strict';var publicWidget=require('web.public.widget');publicWidget.registry.UnsplashBeacon=publicWidget.Widget.extend({selector:'#wrapwrap',start:function(){var unsplashImages=_.map(this.$('img[src*="/unsplash/"]'),function(img){return img.src.split('/unsplash/')[1].split('/')[0];});if(unsplashImages.length){this._rpc({route:'/web_unsplash/get_app_id',}).then(function(appID){if(!appID){return;}
$.get('https://views.unsplash.com/v',{'photo_id':unsplashImages.join(','),'app_id':appID,});});}
return this._super.apply(this,arguments);},});});;
/* /auth_signup/static/src/js/signup.js defined in bundle 'web.assets_frontend_lazy' */
odoo.define('auth_signup.signup',function(require){'use strict';var publicWidget=require('web.public.widget');publicWidget.registry.SignUpForm=publicWidget.Widget.extend({selector:'.oe_signup_form',events:{'submit':'_onSubmit',},_onSubmit:function(){var $btn=this.$('.oe_login_buttons > button[type="submit"]');$btn.attr('disabled','disabled');$btn.prepend(' ');},});});